什么是碎片和活动之间的核心区别?哪些代码可以在碎片中编写?

16

我有三个选项卡,每个选项卡有三个片段,并且有一个主活动,我想创建套接字以通过WiFi网络发送消息,那么我应该在哪里编写代码?是在特定的片段类中还是在主活动中?


请查看以下链接,这可能会对您有所帮助:片段 vs 活动 - kalyan pvs
一个Fragment并不是完全独立的,它需要一个Activity作为宿主。而一个Activity可以自己实例化。我认为这是它们之间的主要区别。 - LuckyMe
这是另一个链接,它回答了你的问题。 - Thomas Ny
非常感谢,你能帮助我解决我所描述的情况吗? - Talib
1个回答

16

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

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

但是在片段中,你需要像这样做:

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

同样地,如果你从fragment的布局文件中访问某个东西,你需要执行以下步骤:

1)在fragment内部获取父布局的全局引用,例如:

    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); 

实际上我想创建一个套接字以便在局域网中广播消息,但现在我将用于监听广播事件的按钮位于其中一个片段中,那么我可以在片段内编写广播消息代码吗? - Talib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接