[英]getActivity() or getContext() for a fragment with a viewpager?
[英]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));
U始終可以從視圖本身中使用上下文viewPager.getContext()
只要U知道在那一點上活動不會為空(例如在onActivityCreated
getActivity()
,就可以使用getActivity()
是可以的。
如果您想擺脫皮棉警告,只需對getActivity
null檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.