我遇到SlidingTabLayout
的问题。我想在ViewPager
内部Fragment
(片段放在其他片段中),只要我使用PagerTabStrip
,它就可以正常工作。我想将其更改为SlidingTabLayout
,但是有一些NullPointerException。我从谷歌的iosched应用程序中复制了SlidingTabLayout.java和SlidingTabStrip.java。
适配器:
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private static int NUM_ITEMS = 2;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new BlankFragment();
case 1:
return new BlankFragment();
default:
return null;
}
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Tab One";
case 1:
return "Tab Two";
}
return null;
}
}
在onCreateView中是这样的:
mAdapter = new ViewPagerAdapter(this.getFragmentManager());
mViewPager = (ViewPager) fragmentView.findViewById(R.id.pager);
mTabs = (SlidingTabLayout) fragmentView.findViewById(R.id.tabs);
new setAdapterTask().execute();
mTabs.setDistributeEvenly(true);
mTabs.setViewPager(mViewPager);
我只是想知道为什么所有逻辑适用于PagerTabStrip
但不适用于SlidingTabLayout
。 NullPointerException出现在populateTabStrip()
的SlidingTabLayout.java中,更准确地说是adapter.getCount()
指令。任何人都可以帮我解决这个问题吗?
EDIT
NullPointerException来自populateTabStrip()
中的SlidingTabLayout.java,因为适配器为null。为什么它没有注意到我的适配器?
final PagerAdapter adapter = mViewPager.getAdapter(); // <-it is always null