我正在使用ViewPager概念的片段。我正在创建一个日记应用程序,其中我只使用一个片段从数据库中获取所有更新并显示在其中。直到这一切都很好......根据我的要求,当我点击片段中的按钮时,我需要显示另一个片段,允许用户存储图像。 我的问题是......
- 如果我在片段中使用替换方法,那么如果A是由viewpager组成的片段而B是我想要替换的片段,那么它就无法正确替换。 - 然后,如果我使用替换B是可见的,但A也出现在片段B
下FragmentManager m=getActivity().getSupportFragmentManager();
FragmentTransaction ft = getActivity().getSupportFragmentManager()
.beginTransaction();
Demobutton demobutton = new Demobutton();
ft.replace(R.id.lay, demobutton);
ft.commit();
希望你们明白我的问题。如果您觉得我的问题不完整,请告诉我。
答案 0 :(得分:0)
根据您使用DemoButton片段的方式,我有两个建议:
1)也许你的问题是嵌套片段。您从活动中获取FragmentManager,但如果Demobutton已经是片段的一部分,则使用外部片段的getChildFragmentManager()代替。
2)根据我使用带有片段的ViewPager的经验,ViewPager的PagerAdapter应该执行所有片段事务。您可以从支持库扩展和覆盖类FragmentPagerAdapter,以便在需要时在ViewPager中获取正确的片段。
答案 1 :(得分:0)
我开发了一个小型示例应用程序,可以在不覆盖本机类的情况下实现此目的。
重点是使用片段作为容器。
在ViewPagerAdapter中:
@Override
public Fragment getItem(int position) {
/*
* IMPORTANT: This is the point. We create a RootFragment acting as
* a container for other fragments
*/
if (position == 0)
return new RootFragment();
else
return new StaticFragment();
}
RootFragment布局应如下所示:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root_frame" >
</FrameLayout>
您可以在此处查看我的完整说明:https://stackoverflow.com/a/21453571/1631136