0

これは私が持っている XML です:

<ImageView
    android:id="@+id/ivRockPic"
    android:layout_width="230dp"
    android:layout_height="230dp"
    android:layout_gravity="center"
    android:background="@drawable/image_border" />

<TableLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:weightSum="100" >

        <LinearLayout android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="50"
                android:weightSum="100"
                android:id="@+id/llAns1"
                android:orientation="horizontal">

            <TextView
                android:id="@+id/tvAns1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="50"
                android:text="Ans1"
                android:textSize="20sp"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/ivAns1"
                android:layout_gravity="right"
                android:layout_weight="50"
                android:layout_width="100dp"
                android:layout_height="50dp"
                />

        </LinearLayout>

        <LinearLayout android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="50"
                android:weightSum="100"
                android:id="@+id/llAns2"
                android:orientation="horizontal">

            <TextView
                android:id="@+id/tvAns2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Ans2"
                android:layout_weight="50"
                android:textSize="20sp"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/ivAns2"
                android:layout_gravity="right"
                android:layout_width="100dp"
                android:layout_weight="50"
                android:layout_height="50dp"
                 />
        </LinearLayout>
    </TableRow>

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:weightSum="100" >

        <LinearLayout android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="50"
                android:weightSum="100"
                android:id="@+id/llAns3"
                android:orientation="horizontal">

            <TextView
                android:id="@+id/tvAns3"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="50"
                android:text="Ans3"
                android:textSize="20sp"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/ivAns3"
                android:layout_gravity="right"
                android:layout_width="100dp"
                android:layout_weight="50"
                android:layout_height="50dp"
                />
        </LinearLayout>

        <LinearLayout android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="50"
                android:weightSum="100"
                android:id="@+id/llAns4"
                android:orientation="horizontal">

            <TextView
                android:id="@+id/tvAns4"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="50"
                android:text="Ans4"
                android:textSize="20sp"
                android:textStyle="bold" />
            <ImageView
                android:id="@+id/ivAns4"
                android:layout_gravity="right"
                android:layout_width="100dp"
                android:layout_weight="50"
                android:layout_height="50dp"
                 />
        </LinearLayout>
    </TableRow>

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:weightSum="100" >

        <TextView
            android:id="@+id/tvAnswer"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="50" />

        <Button
            android:id="@+id/bNext"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="50"
            android:text="Next" />
    </TableRow>
</TableLayout>

ボタンを1つだけ投稿しました。そして、これが繰り返されます。このセットアップは完全に正常に機能します。テスト済み、Bean で初期化済み、動作しています。しかし、ここに問題があります。ImageView を TextView の上に移動すると、ImageView id をフェッチするビューの開始行でエラーがスローされます。しかし、元に戻すと、うまく機能します。何か案は?

エラー:

内部の 2 つのメソッドは、単なる文字列の初期化です。

res = getResources();
        img = (ImageView)findViewById(R.id.ivRockPic);
        tvAnswer = (TextView) findViewById(R.id.tvAnswer);
        initializeRussian();
        initAnswerList();
        next = (Button)findViewById(R.id.bNext);
        iViews[0] = (ImageView) findViewById(R.id.ivAns1);//dies
        iViews[1] = (ImageView) findViewById(R.id.ivAns2);
        iViews[2] = (ImageView) findViewById(R.id.ivAns3);
        iViews[3] = (ImageView) findViewById(R.id.ivAns4);
        lLayouts[0] = (LinearLayout) findViewById(R.id.llAns1);
        lLayouts[1] = (LinearLayout) findViewById(R.id.llAns2);
        lLayouts[2] = (LinearLayout) findViewById(R.id.llAns3);
        lLayouts[3] = (LinearLayout) findViewById(R.id.llAns4);
        tViews[0] = (TextView) findViewById(R.id.tvAns1);
        tViews[1] = (TextView) findViewById(R.id.tvAns2);
        tViews[2] = (TextView) findViewById(R.id.tvAns3);
        tViews[3] = (TextView) findViewById(R.id.tvAns4);

06-29 23:57:09.838: E/AndroidRuntime(5236): Uncaught handler: thread main exiting due to uncaught exception
06-29 23:57:09.869: E/AndroidRuntime(5236): java.lang.RuntimeException: Unable to start activity ComponentInfo{rock.school.rzn.rockquiz/rock.school.rzn.rockquiz.GameScreen}: java.lang.ClassCastException: android.widget.TextView
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.os.Looper.loop(Looper.java:123)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.app.ActivityThread.main(ActivityThread.java:4363)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at java.lang.reflect.Method.invokeNative(Native Method)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at java.lang.reflect.Method.invoke(Method.java:521)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at dalvik.system.NativeStart.main(Native Method)
06-29 23:57:09.869: E/AndroidRuntime(5236): Caused by: java.lang.ClassCastException: android.widget.TextView
06-29 23:57:09.869: E/AndroidRuntime(5236):     at rock.school.rzn.rockquiz.GameScreen.initialize(GameScreen.java:171)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at rock.school.rzn.rockquiz.GameScreen.onCreate(GameScreen.java:47)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-29 23:57:09.869: E/AndroidRuntime(5236):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
06-29 23:57:09.869: E/AndroidRuntime(5236):     ... 11 more
4

3 に答える 3

0

うーん、これは奇妙なバグのようでした。再配置、再構築、新しいコンポーネントの追加を試みましたが、最終的に、ファイルを別の名前で再作成しただけで機能しました。ファイルかEclipseのパスか何かに問題があったと思います。

于 2013-07-10T20:52:07.643 に答える
0

ログからわかる限り、エラーは、ImageViewtoまたはその逆にキャストしようとしているということです。問題は、クラスTextViewのメソッドと171行にあります。initialize()GameScreen

ここを参照してください:

Caused by: java.lang.ClassCastException: android.widget.TextView
06-29 23:57:09.869: E/AndroidRuntime(5236):     at rock.school.rzn.rockquiz.GameScreen.initialize(GameScreen.java:171)
于 2013-06-29T20:12:07.653 に答える
0

ClassCastException何かを互換性のない型にキャストしようとしていることを意味します。あなたの場合、行

iViews[0] = (ImageView) findViewById(R.id.ivAns1);

idR.id.ivAns1で何かを取得し、それを にキャストしようとしImageViewます。例外メッセージから判断すると、この id を持つビューは実際にはTextViewです。そのため、キャストは失敗します。

ivAns1XMLの id を持つビューは ですImageViewが、ファイルの残りの部分を注意深く調べて、他の要素に同じ id がないことを確認します。また、R ファイルを再作成してみてください。

于 2013-06-29T20:12:07.903 に答える