我使用片段吗?

时间:2013-03-25 09:48:22

标签: android android-fragments

我对使用片段的思想正确方法有点困惑。

正如Android开发者所述,

  

Fragment表示一个行为或用户界面的一部分   活动。您可以将单个活动中的多个片段组合到一起   构建多窗格UI并在多个活动中重用片段。您   可以将片段视为活动的模块化部分,具有   它自己的生命周期,接收自己的输入事件,你可以   在活动运行时添加或删除(有点像“子”   活动“你可以在不同的活动中重复使用。”

还有:

  

片段将应用程序功能和UI分解为可重用的   modules将多个片段添加到屏幕以避免切换   活动

我对片段的使用方式如下: 我只有一个主要的Activity和一大堆片段。我更喜欢更换碎片,而不是开始活动。 例如,我有FeedsFragmentFriendsFragmentMessagesFragment,当我从滑动菜单中选择内容时,我的Activity只会替换主Fragment。如果我从其他Fragment中启动Fragment,我会把前一个片段放在backstack中。

某些片段需要Activity来更改操作栏,我直接通过

来完成
((MainActivity)getActivity()).setupActionBar();

目前我没有任何支持平板电脑布局的代码(如Android开发人员的示例所示),但我打算添加它。

那么,这是正确的做事方式吗?或者我完全错过了什么?

1 个答案:

答案 0 :(得分:0)

如您所知,fragment有自己的生命周期,您可以在活动生命周期中使用它的事件。

但是片段生命周期依赖于活动生命周期所以当活动被破坏时,碎片也会被破坏。

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();    
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);    
// Commit the transaction
transaction.commit();

哟可以使用片段事务,在一个活动中替换它们,我认为你使用相同的方式,

我认为你的方式不对,使用片段而不是使用不同的活动是没有问题的。

但你应该考虑一下,你真的需要在一个活动中使用它们吗?如果您不需要在一个活动中显示它们,则不需要使用片段。

  

片段必须始终嵌入到活动和片段中   生命周期直接受主机活动生命周期的影响。对于   例如,当活动暂停时,其中的所有片段也是如此,并且   当活动被破坏时,所有碎片都被破坏。然而,虽然   一个活动正在运行(它处于恢复的生命周期状态),你可以   独立操作每个片段,例如添加或删除它们。   执行此类片段事务时,您还可以将其添加到   由活动管理的后台堆栈 - 每个后台堆栈条目   activity是发生的片段事务的记录。该   后栈允许用户反转片段事务(导航   向后),按后退按钮。

因此,它没有错,但我认为如果你不需要,创建不同的活动很容易维护。

enter image description here