片段和活动之间的核心区别是啥?哪些代码可以写成片段?

Posted

技术标签:

【中文标题】片段和活动之间的核心区别是啥?哪些代码可以写成片段?【英文标题】:What's the core difference between fragment and activity? Which code can be written in fragment?片段和活动之间的核心区别是什么?哪些代码可以写成片段? 【发布时间】:2013-08-08 15:42:15 【问题描述】:

我有三个选项卡,每个选项卡包含三个片段和一个主要活动,我想创建套接字以通过 wifi 网络发送消息,那么我应该在哪里编写代码呢?在那个特定的片段类或主要活动中?

【问题讨论】:

查看此链接,这可能会对您有所帮助..[片段与活动][1] [1]:***.com/questions/10478233/… 片段并不是完全独立的,它需要一个活动作为宿主。虽然一个活动可以自己实例化。我认为这是主要区别。 [这是另一个链接,它回答了您的问题][1] [1]:***.com/questions/10477997/… 非常感谢,你能帮我谈谈我描述的场景吗? 【参考方案1】:

当然,您可以在片段中编写任何代码,但您需要注意一些事情。在访问需要上下文或特定于活动的任何内容时,您将需要获取对片段的超级活动的引用,例如在活动中创建意图时,您可以执行以下操作:

    Intent intent = new Intent(this,SomeActivity.class);

但是在片段中你必须做这样的事情:

    Intent intent = new Intent(super.getActivity(),SomeActivity.class);

同样,如果您从片段的布局文件中访问某些东西。您需要执行以下步骤:

1) 在片段中获取对片段父布局的全局引用。例如

    private LinearLayout result_view;

2) 实现 OnCreateView 方法而不是 onCreate 方法。

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) 

        return result_view;
    

3) 在片段的 onCreateView 方法中像这样膨胀片段布局:

    result_view = (LinearLayout) inflater.inflate(
            R.layout.image_detail_pager, container, false);

4) 您现在可以像这样访问布局视图:

    layout_a = (LinearLayout) result_view
            .findViewById(R.id.some_layout_id); 

【讨论】:

实际上我想创建套接字以通过 LAN 广播消息,但现在我将监听广播事件的按钮位于片段之一中,那么我可以编写广播消息代码内部片段?

以上是关于片段和活动之间的核心区别是啥?哪些代码可以写成片段?的主要内容,如果未能解决你的问题,请参考以下文章

片段和活动之间没有传递值

跨活动的片段之间的共享元素转换不一致

一个片段的活动有啥意义吗?

在片段和活动之间导航

活动和片段之间的生命周期

如何在活动和片段之间传递对象