[英]Tablayout in Fragment not working in Navigation Drawer
I am creating a tabbed layout as home fragment of navigation drawer activity, 我正在创建一个选项卡式布局,作为导航抽屉活动的主页片段,
so i called fragment named 'test' as default in main activity. 所以我在主要活动中将名为“测试”的片段称为默认片段。 like
喜欢
test home_fragment=new test();
android.support.v4.app.FragmentManager manager=getSupportFragmentManager();
manager.beginTransaction().replace(R.id.layout, home_fragment,home_fragment.getTag()).commit();
if i call this fragment again . 如果我再叫这个片段。 like
喜欢
if (id == R.id.nav_home) {
test home_fragment=new test();
android.support.v4.app.FragmentManager manager=getSupportFragmentManager();
manager.beginTransaction().replace(R.id.layout, home_fragment,home_fragment.getTag()).commit();
}
now the result is tab1 and tab2 are gone 现在结果是tab1和tab2不见了
See the screenshot for more reference 请参阅屏幕截图以获取更多参考
this is my test class( tabbed layout) 这是我的测试课(选项卡式布局)
package com.hackerinside.jaisonjoseph.testapp;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import static android.R.attr.x;
/**
* A simple {@link Fragment} subclass.
*/
public class test extends Fragment {
public SectionsPagerAdapter mSectionsPagerAdapter;
public ViewPager mViewPager;
public test() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_test, container, false);
// View x = inflater.inflate(R.layout.fragment_test,null);
mSectionsPagerAdapter = new SectionsPagerAdapter (getFragmentManager());
mViewPager = (ViewPager) rootView.findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tabs);
//Adding the tabs using addTab() method
tabLayout.addTab(tabLayout.newTab().setText("Tab Title 1"));
tabLayout.addTab(tabLayout.newTab().setText("Tab Title 2"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(mViewPager);
return rootView;
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
private SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position)
{
case 0:
tab1 tab1=new tab1();
return tab1;
case 1:
tab2 tab2=new tab2();
return tab2;
default:return null;
}
}
@Override
public int getCount() {
// Show 3 total pages.
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "SECTION 1";
case 1:
return "SECTION 2";
}
return null;
}
}
}
this is my tabbed layout xml code 这是我的选项卡式布局xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.hackerinside.jaisonjoseph.testapp.MainActivity"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</LinearLayout>
Try this two solution: 尝试以下两种解决方案:
Solution 1 解决方案1
instead of 代替
public class SectionsPagerAdapter extends FragmentPagerAdapter {
use 采用
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
Solution 2 解决方案2
use getChildFragmentManager()
instead of getFragmentManager()
使用
getChildFragmentManager()
而不是getFragmentManager()
mSectionsPagerAdapter = new SectionsPagerAdapter (getChildFragmentManager());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.