我们的目标是用Fragment来搭建一个大应用,可行吗?
现在先回答一个个小问题
问题一 : Fragment的保存?
保存Fragment是把Fragment加入到由Activity管理的Fragment返回栈,
当前Fragment被新Fragment替代,当前Fragment会被销毁,Fragment走生命周期方法onDestoryView,
保存Fragment并不能维护被保存的Fragment的UI界面,而是按返回键回到之前被保存的Fragment,Fragment会重新走onCreate;
activity和fragment生命周期的对应:
Activity 生命周期与片段生命周期之间的最显著差异在于它们在其各自返回栈中的存储方式。 默认情况下,Activity 停止时会被放入由系统管理的 Activity 返回栈(以便用户通过返回按钮回退到 Activity,任务和返回栈对此做了阐述)。不过,仅当您在移除片段的事务执行期间通过调用 addToBackStack()
显式请求保存实例时,系统才会将片段放入由宿主 Activity 管理的返回栈。
不过,在您调用 commit()
之前,您可能想调用 addToBackStack()
,以将事务添加到片段事务返回栈。 该返回栈由 Activity 管理,允许用户通过按返回按钮返回上一片段状态。
例如,以下示例说明了如何将一个片段替换成另一个片段,以及如何在返回栈中保留先前状态:
// 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();
如果您没有在执行移除片段的事务时调用 addToBackStack()
,则事务提交时该片段会被销毁,用户将无法回退到该片段。 不过,如果您在删除片段时调用了 addToBackStack()
,则系统会停止该片段,并在用户回退时将其恢复。
对于每个片段事务,您都可以通过在提交前调用 setTransition()
来应用过渡动画。
=======================================================
Fragment怎么用?
官方文档 点击打开链接
Fragment结合ViewPager架构
Fragment结合FragmentTabHost架构
单Activity多Fragment架构 点击打开链接
=======================================================
square 点击打开链接
文章中不懂得地方:
响应式UI
该篇文章详细介绍了Fragment生命周期方法