【发布时间】:2017-10-17 09:58:59
【问题描述】:
我发现了很多类似的问题和很多不同的答案,但没有一个对我有帮助。如果可能的话,我会尝试发布一个明确的问题以获得明确的答案。
所以我有一个 Activity,它有一个带有 FragmentStatePagerAdapter 的 ViewPager,它(目前)只包含一个片段(HomeScreenFragment)。
在 HomeScreenFragment 内部,我有一个 RecyclerView,其中包含几种不同图标的列表,这些图标应该为每个项目单击打开不同的片段。
HomeScreenFragment 有一个 FrameLayout 作为 id 名称为“container”的根布局。在这种情况下,这是我调用用 MainTypesFragment 替换 HomeScreenFragment 的方法:
private void openAllTypesFragment() {
MainTypesFragment fragment = new MainTypesFragment();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.addToBackStack(HomeScreenFragment.class.getName());
transaction.commit();
eventBus.post(new Event(null, Event.EVENT_FRAGMENT));
}
由于 FragmentStatePagerAdapter 在 MainActivity 中初始化,我正在发送一个事件,该事件将 MainActivity 捕获并调用 adapter.notifyDataSetChanged();
这样做,没有任何反应。我尝试使用 getChildFragmentManager() 而不是 getActivity().getSupportFragmentManager(),在这种情况下,前一个片段 (HomeScreenFragment) 在新片段 (MainTypesFragment) 下方可见..
任何想法我在这里做错了什么?
【问题讨论】:
-
你想替换之前的片段还是只打开旧片段之上的新片段?
-
我想在 viewpager (HomeScreenFragment) 中有 2 个片段,可以用几个不同的可能片段替换,具体取决于 RecyclerView 项目单击的类型,一个片段始终作为 viewpager 中的第二个片段存在
-
如果我正确理解你需要为每个页面单独的片段堆栈?就像您单击 page1 列表项 1 并会在 page1 列表上方出现新片段?
-
我将尝试更好地描述它:假设 viewpager 中的第一个片段是 MovieFragment,第二个片段是 ActorsFragment。如果单击 MovieFragment 中的电影项目,MovieFragment 应替换为 MovieDetails 片段,但 ActorsFragment 保留为 viewpager 中的第二个片段。它不应该在上面。整个片段应该替换为新片段
标签: android android-fragments fragmenttransaction fragmentstatepageradapter