标签片段未显示

时间:2019-05-02 05:53:30

标签: java android

我正在尝试在片段中添加选项卡(用于底部导航栏)。但是,当我运行该应用程序时,这些选项卡根本不显示。下面是结果的图像:

IMAGE

  • Home.java->应该显示2个选项卡的片段,其中包括BlankFragment.java

  • CategoryAdapater.java->设置标签名称和片段以显示在每个标签中

  • BlankFragment.java->每个选项卡上显示的空片段

我如何使其正常工作?


Home.java(应显示选项卡的片段)

public class Home extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_home, container, false);

    ViewPager viewPager = rootView.findViewById(R.id.viewpager);
    CategoryAdapter adapter = new CategoryAdapter(getChildFragmentManager());
    viewPager.setAdapter(adapter);
    TabLayout tabLayout = rootView.findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

    return rootView;
}

public Home() {}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
}

@Override
public void onDetach() {
    super.onDetach();
}

CategoryAdapater.java

public class CategoryAdapter extends FragmentPagerAdapter {

public CategoryAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    if (position == 0) {
        return new BlankFragment();
    } else {
        return new BlankFragment();
    }
}

@Override
public int getCount() {
    return 2;
}

@Override
public CharSequence getPageTitle(int position) {
    if (position == 0) {
        return "Devices";
    } else {
        return "Numbers";
        }
    }
}

BlankFragment.java

public class BlankFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_blank, container, false);

    return rootView;
}

public BlankFragment() {}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
}

@Override
public void onDetach() {
    super.onDetach();
   }
}

2 个答案:

答案 0 :(得分:0)

适配器addFragment丢失

    ViewPager viewPager = rootView.findViewById(R.id.viewpager);
    CategoryAdapter adapter = new CategoryAdapter(getChildFragmentManager());
    BlankFragment frag= new BlankFragment ();
    adapter.addFragment(frag);
    viewPager.setAdapter(adapter);
    TabLayout tabLayout = rootView.findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

答案 1 :(得分:0)

public class Home extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_home, container, false);

ViewPager viewPager = rootView.findViewById(R.id.viewpager);
setupViewPager(viewPager);
CategoryAdapter adapter = new CategoryAdapter(getChildFragmentManager());
viewPager.setAdapter(adapter);
TabLayout tabLayout = rootView.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);

return rootView;
}
public Home() {}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
 }

private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new 
ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new OneFragment(), "Devices");
adapter.addFragment(new TwoFragment(), "Numbers");
viewPager.setAdapter(adapter);
}

@Override
public void onDetach() {
super.onDetach();
}
}

使用此代码更新家庭课程