如何使用字符串数组或数组列表在TabLayout中添加选项卡?

时间:2018-07-06 07:11:38

标签: android android-fragments android-tablayout

我有一个fragment A,其中有一个gridView,其中有一个项目,现在当我单击其中一个项目时,它会创建一个Fragment B的新实例,其中包含一些arguments(字符串数组)。

然后在onCreateView中,我得到了这个字符串数组,现在

  

我要将其设置为标签布局的标签。

为此,我为每个选项卡的布局创建了一个TabFragment(一个都是相同的)和一​​个tabViewPagerAdapter

然后在Fragment B中,我得到了多余的Arguments(一个String数组)并将其设置为TabLayout。

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

    Bundle bundle = this.getArguments();

    if (bundle != null) {
        // handle your code here.
        Toast.makeText(getActivity(), "Bundle is getting the thing", Toast.LENGTH_SHORT).show();
        tabs = bundle.getStringArray("key");
        for (String s: tabs){
            Toast.makeText(getActivity(), s, Toast.LENGTH_SHORT).show();// it is showing the toast with all elements of the array
        }
    }

    //viewpager
    ViewPager viewPager = view.findViewById(R.id.book_viewpager);


    TabLayout tabLayout = includeView.findViewById(R.id.tabs);
    TabViewPagerAdapter adapter = new TabViewPagerAdapter(getActivity().getSupportFragmentManager(), tabs);//this tab is generating null pointer exception but tab have elements in it.
    viewPager.setAdapter(adapter);
    tabLayout.setupWithViewPager(viewPager, true);

    return view;
}

这就是我用Fragment A发送参数的方式

 String text = (String) tempText.getText();

 Bundle bundle = new Bundle();
 if (text.equalsIgnoreCase("science")){
      bundle.putStringArray("key",science); // Put anything what you want
  }else {
    bundle.putStringArray("key",engineering); // Put anything what you want
    }

 BooksFragment fragment = new BooksFragment();
 fragment.setArguments(bundle);

 assert getFragmentManager() != null;

 getFragmentManager().beginTransaction().replace(R.id.main_container, fragment).commit();

但是似乎没有任何效果。尽管tabs中包含元素,但片段B中的注释行调用了空指针异常。

  

我想要实现的是,在单击grid view的{​​{1}}项的同时,如果有Fragment A,可以更改tablaout的{​​{1}}的标签另一种方式,请写

Logcat

  

java.lang.NullPointerException:尝试获取空数组的长度           在com.medit.persuaeture.Adapters.TabViewPagerAdapter.getCount(TabViewPagerAdapter.java:27)           在android.support.v4.view.ViewPager.setAdapter(ViewPager.java:526)           在com.medit.persuaeture.Fragments.Main.BooksFragment.onCreateView(BooksFragment.java:63)

TabViewPagerAdapter'

Fragment B

0 个答案:

没有答案