在Android< = 4.2中,ViewPager findViewById为null

时间:2014-07-17 22:32:11

标签: android android-viewpager

我使用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);
    }
}

3 个答案:

答案 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)

哇,哇,我明白了。它使用了完全不同的平板电脑布局。我使用了Android Studio中的默认主/详细模板,忘了更新平板电脑的布局,这就解释了为什么我的观点无法找到。