hoo*_*on1 4 java android android-intent android-fragments android-activity
我想在活动中创建片段。我在 1 个活动中有 4 个片段我有这样的代码
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new fragment_invoice(), "Invoice");
adapter.addFragment(new fragment_sales_order(), "Sales Order");
adapter.addFragment(new fragment_achievement(), "Achievement");
adapter.addFragment(new fragment_approval(), "Approval");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经成功显示片段但是当我打开其他片段例如 1. 打开 fragment_invoice 2. 移动到 fragment_achievement 3. 我回到 fragment_invoice 然后所有数据都将丢失但在 fragment_sales_order 中不会。4. 如果我打开fragment_sales_order 会发生这种情况 5. 移动到fragment_approval 然后fragment_sales_order 中的所有数据都会丢失。
为什么片段中的数据会随着奇偶片段丢失?
我正在研究这个,也许会给我一些使用 getchildfragmentmanager 的想法。 getChildFragmentManager() 无法解析或无法引用
对于方法 getchildfragmentmanager 必须扩展到 FragmentManager 但我的 java 类必须扩展 AppCompatActivity。无法扩展到 FragmentManager 因为我从 http 获取的一些数据扩展到活动意图
当我移动到其他片段时,有人可以帮助我修复我的片段以显示数据吗?对不起,如果我的问题和我的语法很奇怪???????
Roh*_*rma 12
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());
Run Code Online (Sandbox Code Playgroud)
要从 Fragment1 显示 Fragment2,我们有 2 种方式
使用 getFragmentManager()
getFragmentManager().beginTransaction().replace(R.id.container_view_on_main, Fragment1.newInstance());
Run Code Online (Sandbox Code Playgroud)
使用 getChildFragmentManager()
首先,我们必须在 fragment1.xml 中创建一个 ID 为 container_view_on_fragment1 的布局,然后
getChildFragmentManager().beginTransaction().replace(R.id.container_view_on_fragment1, Fragment2.newInstance()).commit();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6357 次 |
| 最近记录: |