[英]Android activity -> fragment -> viewPager with tabLayout not working
[英]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.