简体   繁体   English

片段中的布局在导航抽屉中不起作用

[英]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.

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