使用viewpager时,getActivity是否可以返回null?

时间:2019-02-16 21:14:42

标签: java android android-fragments android-viewpager

我收到一条警告,说getActivity可能会返回null,因此我想知道getActivity何时可能返回null,这将是一个问题,因为我使用getActivity作为上下文。

我在其他文章中读到了不推荐使用onAttach的用法,那么获取上下文或确保getActivity()不会返回null的最佳方法是什么?

我还在使用带有片段的viewPager,因此片段被附加到一个Activity上,因此通常它不会返回null?

  public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

    private int numOfTabs;

    SectionsPagerAdapter(FragmentManager fm, int numOfTabs) {
        super(fm);
        this.numOfTabs = numOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                Log.i(TAG, "Fragment Pos: "+ position);
                return new Tab1();
            case 1:
                Log.i(TAG, "Fragment Pos: "+ position);
                return new Tab2();
            case 2:
                Log.i(TAG, "Fragment Pos: "+ position);
                return new Tab3();
            case 3:
                Log.i(TAG, "Fragment Pos: "+ position);
                return new Tab4();
            case 4:
                Log.i(TAG, "Fragment Pos: "+ position);
                return new Tab5();
            case 5:
                Log.i(TAG, "Fragment Pos: "+ position);
                return new Tab6();
                default:
                    return null;
        }
    }

    @Override
    public int getCount() {
        // Get total pages
        return numOfTabs;
    }
}

setupViewPager()方法:

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());

    // Set up the ViewPager with the sections adapter
    mViewPager = findViewById(R.id.viewPager);

    mViewPager.setAdapter(mSectionsPagerAdapter);

    mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

1 个答案:

答案 0 :(得分:0)

  1. U始终可以使用视图本身的上下文viewPager.getContext()

  2. 只要您知道在那一点上活动不会为空,例如在getActivity()中,就可以使用onActivityCreated

如果您想摆脱棉绒警告,只需对getActivity变量进行空检查。