0

アンドロイド 2.3.3

私はカスタム電卓に取り組んでいます。ボタンをシャッフルするだけでUIを変更しようとしていますが、特に、1つのボタンを変更しようとするとClassCastExceptionが発生します。プロジェクトを「クリーン」にし、R.java ファイルを削除し、xml ファイルを変更して保存しようとしましたが、どれも機能しませんでした。これはEclipseのエラースタックです:::

01-10 09:19:41.949: E/AndroidRuntime(21494): FATAL EXCEPTION: main
01-10 09:19:41.949: E/AndroidRuntime(21494): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mobilevoiceapps.advancedvoicecalculatorplus/com.mobilevoiceapps.advancedvoicecalculatorplus.AdvancedVoiceCalculatorPlus}: java.lang.ClassCastException: android.widget.LinearLayout
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.os.Looper.loop(Looper.java:130)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.app.ActivityThread.main(ActivityThread.java:3687)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at java.lang.reflect.Method.invokeNative(Native Method)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at java.lang.reflect.Method.invoke(Method.java:507)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at dalvik.system.NativeStart.main(Native Method)
01-10 09:19:41.949: E/AndroidRuntime(21494): Caused by: java.lang.ClassCastException: android.widget.LinearLayout
01-10 09:19:41.949: E/AndroidRuntime(21494):    at com.mobilevoiceapps.advancedvoicecalculatorplus.AdvancedVoiceCalculatorPlus.onCreate(AdvancedVoiceCalculatorPlus.java:226)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-10 09:19:41.949: E/AndroidRuntime(21494):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
01-10 09:19:41.949: E/AndroidRuntime(21494):    ... 11 more

エラーのないxmlファイルは次のとおりです:::

   <LinearLayout
                android:id="@+id/linearLayout9"
                android:layout_width="match_parent"
                android:layout_height="45px"
                android:layout_marginBottom="2px"
                android:background="#000000" >

                <Button
                    android:id="@+id/btnPower"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="^"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />



                <Button
                    android:id="@+id/btnNthRoot"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="n √x"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />



                <Button
                    android:id="@+id/btnLog10"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="Log10"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />

                <Button
                    android:id="@+id/btnLN"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="Loge"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />
            </LinearLayout>

電源ボタンを別の線形レイアウトに変更すると、エラーが発生します...

エラー発生時のXML

 <LinearLayout
                android:id="@+id/linearLayout4"
                android:layout_width="match_parent"
                android:layout_height="45px"
                android:layout_marginBottom="2px"
                android:background="#000000" >

                <Button
                    android:id="@+id/btnInverse"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="1/x"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />





                <Button
                    android:id="@+id/btnFactorial"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="n!"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />


                <Button
                    android:id="@+id/btnPower"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="^"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />


                <Button
                    android:id="@+id/btnPercentage"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="%"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />

                <Button
                    android:id="@+id/btnNumberLeftBrace"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text="("
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />

                <Button
                    android:id="@+id/btnNumberRightBrace"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="2px"
                    android:layout_weight="0.20"
                    android:background="@drawable/button_custom"
                    android:text=")"
                    android:textColor="#FFFFFF"
                    android:textSize="24px" />
            </LinearLayout>

電源 (id/btnPower) ボタンを変更しようとすると、classcastexception が発生します。linearlayout9(id/linearlayout9) で置き換えると、エラーが消えます。コンパイルはうまくいきますが、実行時に例外が発生します。

            btn0 = (Button) findViewById(R.id.btnNumber0);
        btn1 = (Button) findViewById(R.id.btnNumber1); // line with the error
        btn2 = (Button) findViewById(R.id.btnNumber2);
        btn3 = (Button) findViewById(R.id.btnNumber3);
        btn4 = (Button) findViewById(R.id.btnNumber4);
        btn5 = (Button) findViewById(R.id.btnNumber5);
        btn6 = (Button) findViewById(R.id.btnNumber6);

エラーは一定の場所にありません。電源ボタンをどこに挿入するかによって異なります。ClassCastException に関するかなりの数の質問を読みましたが、なぜそれが引き起こされているのかよくわかりませんでした。どなたか詳しく教えていただけると助かります。

他の情報が必要な場合はお知らせください。

[解決済み] モバイルからアプリケーションをアンインストールし、プロジェクト -> クリーンに移動して、再度実行します。エラーが引き続き発生する場合は、手順をもう一度実行してください。助けてくれてありがとう。

4

2 に答える 2

0

私はすでにこの問題を経験しており、多くの時間を失ったので、これはまさに私がしたことです:

  • 電話/エミュレーターからアプリをアンインストールします
  • (クリーンが役立つかもしれません-よくわかりません)
  • アプリの新しいバージョンを再コンパイルしてインストールします。

単純なクリーンアップは役に立たないようです。アンインストールすると、奇妙な点が削除され、問題が修正される可能性が高くなります。

これが役立つことを願っています。

于 2013-01-10T09:47:34.160 に答える
0

モバイルからアプリケーションをアンインストールし、project->clean に移動して、再度実行します。エラーが引き続き発生する場合は、手順をもう一度実行してください。助けてくれてありがとう。

于 2013-01-10T09:47:46.313 に答える