2011-09-06 41 views
2

我想創建一個基於新的ViewPager從compability庫的應用程序。 當我從示例應用程序複製行:ClasscastException當投射到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行。 有沒有人有一個想法,爲什麼發生這種情況?

+0

android.support.v4.view.ViewPager和android.support.v4.app.NoSaveStateFrameLayout的類層次結構是什麼? –

+0

它在compability庫中可以自己構建文檔(http://developer.android.com/sdk/compatibility-library.html#Docs)viewpager的類層次結構是java.lang.Object> ViewGroup> android。 support.v4.view.ViewPager和NoSaveStateFrameLayout的類層次結構是java.lang.Object> FrameLayout> android.support.v4.app.NoSaveStateFrameLayout –

回答

3

其實問題是舊的佈局膨脹問題(看看here)。由於一些神奇的原因,findViewByID在這裏不返回null。而不是返回null它返回一個android.support.v4.app.NoSaveStateFrameLayout這是很有趣的順便說一句。

-2

當您嘗試將對象轉換爲與其不兼容的類型時,會發生類轉換異常。所以請檢查你正在做的ViewPager實例是否正確。

+0

您的錯誤似乎更多地關係到JAVA比android,所以我發佈答案的意圖幫助你,但你似乎更聰明,你可以自己解決你的問題,所以要對你的android知識滿意。 – Rocker

+0

你可以在Android中做一些非常狡猾的投射 – CQM

相關問題