2

互換性ライブラリの新しい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にキャストした行で。なぜこれが起こっているのか誰かが知っていますか?

4

2 に答える 2

3

実際の問題は、古いレイアウトの膨張の問題です(ここを参照)。いくつかの魔法の理由で、findViewByIDはここでnullを返しません。nullを返す代わりに、android.support.v4.app.NoSaveStateFrameLayoutを返します。これは非常に面白いです。

于 2011-09-06T16:20:12.663 に答える
-2

互換性のない型にオブジェクトをキャストしようとすると、クラスキャスト例外が発生します。したがってViewPager、実行しているインスタンス化が正しいかどうかを確認してください。

于 2011-09-06T10:39:03.200 に答える