我对使用片段的思想正确方法有点困惑。
正如Android开发者所述,
Fragment表示一个行为或用户界面的一部分 活动。您可以将单个活动中的多个片段组合到一起 构建多窗格UI并在多个活动中重用片段。您 可以将片段视为活动的模块化部分,具有 它自己的生命周期,接收自己的输入事件,你可以 在活动运行时添加或删除(有点像“子” 活动“你可以在不同的活动中重复使用。”
还有:
片段将应用程序功能和UI分解为可重用的 modules将多个片段添加到屏幕以避免切换 活动
我对片段的使用方式如下:
我只有一个主要的Activity和一大堆片段。我更喜欢更换碎片,而不是开始活动。
例如,我有FeedsFragment
,FriendsFragment
,MessagesFragment
,当我从滑动菜单中选择内容时,我的Activity
只会替换主Fragment
。如果我从其他Fragment中启动Fragment,我会把前一个片段放在backstack中。
某些片段需要Activity来更改操作栏,我直接通过
来完成((MainActivity)getActivity()).setupActionBar();
目前我没有任何支持平板电脑布局的代码(如Android开发人员的示例所示),但我打算添加它。
那么,这是正确的做事方式吗?或者我完全错过了什么?
答案 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是发生的片段事务的记录。该 后栈允许用户反转片段事务(导航 向后),按后退按钮。
因此,它没有错,但我认为如果你不需要,创建不同的活动很容易维护。