簡體   English   中英

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

[英]Can getActivity return null when using a 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. U始終可以從視圖本身中使用上下文viewPager.getContext()

  2. 只要U知道在那一點上活動不會為空(例如在onActivityCreated getActivity() ,就可以使用getActivity()是可以的。

如果您想擺脫皮棉警告,只需對getActivity null檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM