片段无法替换为viewpager中的片段

时间:2013-05-29 04:46:29

标签: android android-fragments android-fragmentactivity

我正在使用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();

希望你们明白我的问题。如果您觉得我的问题不完整,请告诉我。

2 个答案:

答案 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