转换为ViewPager时出现ClasscastException

时间:2011-09-06 09:54:46

标签: android android-viewpager

我正在尝试基于兼容性库中的新ViewPager创建应用程序。 当我从示例应用程序中复制行时:

setContentView(R.layout.main);
MyAdapter mAdapter = new MyAdapter(getSupportFragmentManager(), this);
ViewPager mPager = (ViewPager) findViewById(R.id.view_pager);
mPager.setAdapter(mAdapter);

使用以下main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <android.support.v4.view.ViewPager 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/view_pager"
    />
<LinearLayout>

我得到了

java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout

在我投射到ViewPager的行。 有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:3)

实际上问题是旧布局膨胀问题(看here)。出于某些神奇的原因,findViewByID在此处不返回null。而不是返回null它返回一个android.support.v4.app.NoSaveStateFrameLayout,这非常有趣btw。

答案 1 :(得分:-2)

当您尝试将对象强制转换为与其不兼容的类型时,会发生类强制转换异常。因此,请检查您正在进行的ViewPager实例化是否正确。