Android - 在标签内调用片段

时间:2017-05-10 08:10:39

标签: android android-fragments android-tablayout fragmentmanager

我尝试创建一个包含两个页面的应用程序。第一页是标签页,第二页是详细页面。

我使用this guide创建了一个抽头页面。我有一个mainactivity包含视图寻呼机和3个标签(Tab1, Tab2, Tab3)。 Tab3包含用于导航详细信息页面的按钮。每个选项卡都有自己的.java(extends Fragment)和.xml文件。我编辑了fragmentThree.xml布局:

<RelativeLayout 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/fragmentThree"]>

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/goToDetail"
    android:text="GO TO DETAIL" />

我为详细信息页面创建了一个新片段。我在Tab3.java中设置了onclick方法;

goToDetail.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {

            FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.replace(R.id.mainActivity, new Detail());
            transaction.commit();
        }
    });

当我按下按钮时,它什么也没做。我不会替换片段。

2 个答案:

答案 0 :(得分:0)

在主要活动中使用框架布局

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/parent">

在clicklistiner中: -

FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.replace(R.id.parent, new Detail());
            transaction.commit();

答案 1 :(得分:0)

使用viewpager id而不是main layout id,您可以在其中设置选项卡布局片段。

transaction.replace(R.id.viewpager, new Detail());