繁体   English   中英

Android:片段或活动中的tablayout / viewpager片段

[英]Android: tablayout/viewpager fragments within fragment or activity

我有一个正在使用Android开发的项目。 在我的主要活动中,我有一个大片段覆盖了整个屏幕。 通常,对于用户使用的每个ui屏幕,我都会执行一次replace命令并为每个屏幕交换片段。

在我当前的文件夹中,我想放置一个带有三个不同片段的tablayout / viewpager组合,根据所按下的标签,我将显示一个新片段。 问题在于这是一个布局,其中在另一个片段中显示了三个不同的片段。 这有可能还是建议? 以及是否必须将其更改为一项新活动。 导航抽屉是否可以正常工作,并且在我加载活动时就关闭了,否则那里也会出现问题。

谢谢你的帮助

您可以在下面的官方文档中查看相同的内容,也可以使用我的演示代码段: https : //developer.android.com/reference/android/support/v4/app/FragmentTabHost.html

尝试执行以下操作以处理主片段中的选项卡:

public class MainFragment extends Fragment {
private FragmentTabHost mTabHost;

//Mandatory Constructor
public MainFragment() {
}

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_tabs,container, false);


    mTabHost = (FragmentTabHost)rootView.findViewById(android.R.id.tabhost);
    mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);

    mTabHost.addTab(mTabHost.newTabSpec("fragmentb").setIndicator("Fragment B"),
            FragmentB.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("fragmentc").setIndicator("Fragment C"),
            FragmentC.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("fragmentd").setIndicator("Fragment D"),
            FragmentD.class, null);


    return rootView;
}

}

使用此选项卡布局:

<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/realtabcontent"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

</LinearLayout>

是的,带有viewPager的TabLayout将在内存中维护它的不同片段。

因为在这种情况下将只有3个选项卡,这不会影响您的内存性能,因此可以使用pagerAdapter。

您可以将单个片段重用于其他选项卡,但是正如我所说,由于只有3个选项卡,因此不会影响您的性能。

是的,您可以在主片段中包含tabLayout,主片段是您的活动的一部分,除了其他一些回调外,它将遵循与托管活动相同的生命周期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM