Может ли getActivity возвращать нуль при использовании виджета? - PullRequest
0 голосов
/ 17 февраля 2019

Я получаю предупреждение о том, что getActivity может возвратить ноль, поэтому мне было интересно, когда getActivity может вернуть ноль, что было бы проблемой, потому что я использую getActivity в качестве контекста.

Я читал в других постахиспользовать onAttach, который устарел, так каков наилучший способ получить контекст или быть уверенным, что getActivity () не будет возвращать ноль?

Я также использую viewPager с фрагментами, поэтому фрагменты прикрепляются кактивность в порядке, поэтому обычно он не возвращает ноль?

  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 голосов
/ 17 февраля 2019
  1. U всегда может использовать контекст из самого представления viewPager.getContext()

  2. Можно использовать getActivity(), пока U точно знает, чтов этой точке активность не будет нулевой, например, в onActivityCreated.

, и если вы хотите избавиться от предупреждения lint, просто поставьте проверку null на getActivity var.

...