我使用ViewPager在我的应用中滑动标签。它适用于4.2以上的Android版本,但在版本> = 4.0和< = 4.2时崩溃。
当我在视图寻呼机上调用setAdapter时,我得到一个空指针异常,因为事实证明,在findViewById之后,视图寻呼机为空。它适用于Android版本> 4.2。我无法弄清楚其他Android版本的问题。
public class MainActivity extends FragmentActivity {
ViewPager mViewPager;
TabsPagerAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
mViewPager = (ViewPager) findViewById(R.id.main_view_pager);
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
}
}
R.layout.activity_main
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:id="@+id/profile_list_container">
<android.support.v4.view.ViewPager
android:id="@+id/main_view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
</LinearLayout>
适配器
public class TabsPagerAdapter extends FragmentPagerAdapter {
@Override
public int getCount() {
return 3;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new ProfileListFragment();
case 1:
return new BoostFragment();
case 2:
return new StatsFragment();
}
return null;
}
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
}
答案 0 :(得分:0)
可能在布局中没有正确加载ViewPager。在logcat中检查它。
答案 1 :(得分:0)
尝试
mViewPager = new ViewPager(this);
linearlayout.addView (mViewPager);
因为你得到了ViewPager,
new ViewPager(this)
可以确保问题与ViewPager
的类无关。
LinearLayout linearlayout = (LinearLayout)findViewById(R.id.profile_list_container);
可帮助您确保自己的活动已经连接起来&#34;正确的布局。
初始化ViewPager后,请记住设置layoutParam,包括宽度/高度......等等
答案 2 :(得分:0)