我想在活动中创建片段。 我在1个活动中有4个片段 我有这样的代码
Compatibility Level
我已经成功展示了片段 但是当我打开其他片段时 1.打开fragment_invoice 2.移至fragment_achievement 3.我返回fragment_invoice,然后所有数据都将丢失,但fragment_sales_order不会。 4.碰巧我打开fragment_sales_order 5.移至fragment_approval,然后fragment_sales_order中的所有数据都将丢失。
为什么片段中的数据丢失了奇数偶数片段?
我正在对此进行研究,也许可以给我一些使用getchildfragmentmanager的想法。 getChildFragmentManager () cannot be resolved or cannot be referenced
对于方法getchildfragmentmanager必须扩展到FragmentManager 但是我的Java类必须扩展AppCompatActivity。无法扩展到FragmentManager,因为我从http上获取的一些数据扩展到了活动意图
当我移至其他片段时,有人可以帮助我修复片段以便始终显示数据吗? 抱歉,如果我的问题和语法很奇怪 감사합니다여러번
答案 0 :(得分:0)
getChildFragmentManager()的定义是:
返回私有的FragmentManager,用于在Fragment内放置和管理Fragment。
同时getFragmentManager()的定义是:
返回FragmentManager以便与与片段活动相关联的片段进行交互。
基本上,区别在于Fragment现在具有自己的内部FragmentManager,可以处理Fragment。子FragmentManager是仅处理添加到其中的Fragment中包含的Fragment的子程序。另一个FragmentManager包含在整个Activity中。
要在MainActivity上显示Fragment1,必须使用getSupportFragmentManager()
getSupportFragmentManager().beginTransaction().replace(R.id.container_view_on_main, Fragment1.newInstance());
要显示Fragment1中的Fragment2,我们有2种方法
使用getFragmentManager()
getFragmentManager().beginTransaction().replace(R.id.container_view_on_main, Fragment1.newInstance());
使用getChildFragmentManager()
首先,我们必须在fragment1.xml中创建一个ID为container_view_on_fragment1的布局,然后
getChildFragmentManager().beginTransaction().replace(R.id.container_view_on_fragment1, Fragment2.newInstance()).commit();