1. 程式人生 > >android ClassCastException 型別轉換錯誤

android ClassCastException 型別轉換錯誤

1.型別轉換錯誤

03-09 09:45:01.884: E/AndroidRuntime(1847): FATAL EXCEPTION: main

03-09 09:45:01.884: E/AndroidRuntime(1847): Process: com.example.zhihudemo, PID: 1847
03-09 09:45:01.884: E/AndroidRuntime(1847): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.zhihudemo/com.example.zhihudemo.MainActivity}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ImageView
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2219)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.app.ActivityThread.access$800(ActivityThread.java:135)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.os.Handler.dispatchMessage(Handler.java:102)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.os.Looper.loop(Looper.java:136)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.app.ActivityThread.main(ActivityThread.java:5045)
03-09 09:45:01.884: E/AndroidRuntime(1847): at java.lang.reflect.Method.invokeNative(Native Method)
03-09 09:45:01.884: E/AndroidRuntime(1847): at java.lang.reflect.Method.invoke(Method.java:515)
03-09 09:45:01.884: E/AndroidRuntime(1847): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-09 09:45:01.884: E/AndroidRuntime(1847): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-09 09:45:01.884: E/AndroidRuntime(1847): at dalvik.system.NativeStart.main(Native Method)
03-09 09:45:01.884: E/AndroidRuntime(1847): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ImageView
03-09 09:45:01.884: E/AndroidRuntime(1847): at com.example.zhihudemo.MainActivity.onCreate(MainActivity.java:40)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.app.Activity.performCreate(Activity.java:5231)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
03-09 09:45:01.884: E/AndroidRuntime(1847): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2163)

03-09 09:45:01.884: E/AndroidRuntime(1847): ... 11 more

2.博主出錯,是因為在調整 xml 佈局的時候 沒有 clean 專案,導致 bin 檔案沒有真正修改,所以現在 ImageView 的位置被認為還是 ViewPager 所以,出現型別轉換錯誤

下面上 原佈局 和 改動後的佈局

原先是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.zhihudemo.MainActivity" >


   


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true"
        android:layout_marginBottom="50dp"
        android:orientation="vertical" >


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >


            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:background="#999999"
                android:gravity="center"
                android:text="頁面1"
                android:textColor="#222222" />


            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:background="#999999"
                android:gravity="center"
                android:text="頁面2"
                android:textColor="#222222" />


            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:background="#999999"
                android:gravity="center"
                android:text="頁面3"
                android:textColor="#222222" />
        </LinearLayout>


        <ImageView
            android:id="@+id/cursor"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:scaleType="matrix"
            android:src="@drawable/cursor" />
    </LinearLayout>



   <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</RelativeLayout>

改動後:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.zhihudemo.MainActivity" >


    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />




    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true"
        android:layout_marginBottom="50dp"
        android:orientation="vertical" >


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >


            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:background="#999999"
                android:gravity="center"
                android:text="頁面1"
                android:textColor="#222222" />


            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:background="#999999"
                android:gravity="center"
                android:text="頁面2"
                android:textColor="#222222" />


            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:background="#999999"
                android:gravity="center"
                android:text="頁面3"
                android:textColor="#222222" />
        </LinearLayout>


        <ImageView
            android:id="@+id/cursor"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:scaleType="matrix"
            android:src="@drawable/cursor" />

    </LinearLayout>


</RelativeLayout>

解釋:

其實 bin 檔案已經編譯好了,調換位置後由於改動較少,所以 xml 佈局的改動並沒有真正寫入改動後的 bin 檔案中,這是需要 clean 這個專案,重新編譯即可