PEEE802.11

モバイルソフトウェアエンジニアの備忘録

XMLを編集してレイアウトを変更するとエミュレータ上で例外が発生する

ADTでレイアウトを調整するためにXMLを直接編集していたら、レイアウトエディタ上では問題なく表示されているのにGenyMotion上で実行すると以下のエラーを吐いて実行できなかった。

03-31 13:34:34.416: W/dalvikvm(1475): threadid=1: thread exiting with uncaught exception (group=0xa4cefb20)
03-31 13:34:34.420: E/AndroidRuntime(1475): FATAL EXCEPTION: main
03-31 13:34:34.420: E/AndroidRuntime(1475): Process: com.example.mobiledatamanager, PID: 1475
03-31 13:34:34.420: E/AndroidRuntime(1475): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mobiledatamanager/com.example.mobiledatamanager.MainActivity}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.Button
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.app.ActivityThread.access$800(ActivityThread.java:135)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.os.Handler.dispatchMessage(Handler.java:102)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.os.Looper.loop(Looper.java:136)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.app.ActivityThread.main(ActivityThread.java:5017)
03-31 13:34:34.420: E/AndroidRuntime(1475): at java.lang.reflect.Method.invokeNative(Native Method)
03-31 13:34:34.420: E/AndroidRuntime(1475): at java.lang.reflect.Method.invoke(Method.java:515)
03-31 13:34:34.420: E/AndroidRuntime(1475): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-31 13:34:34.420: E/AndroidRuntime(1475): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-31 13:34:34.420: E/AndroidRuntime(1475): at dalvik.system.NativeStart.main(Native Method)
03-31 13:34:34.420: E/AndroidRuntime(1475): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.Button
03-31 13:34:34.420: E/AndroidRuntime(1475): at com.example.mobiledatamanager.MainActivity.onCreate(MainActivity.java:64)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.app.Activity.performCreate(Activity.java:5231)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-31 13:34:34.420: E/AndroidRuntime(1475): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
03-31 13:34:34.420: E/AndroidRuntime(1475): ... 11 more
03-31 13:34:37.456: I/Process(1475): Sending signal. PID: 1475 SIG: 9
03-31 13:37:44.804: D/AndroidRuntime(1528): Shutting down VM


一度R.javaを削除して自動生成し直すと実行できるようになった。

どうもButtonやらTextViewやらの上下関係をXML内で入れ替える等大幅にXMLを書き換えてしまうと、自動生成されるR.javaが自動調整できずにおかしなことになるようだ。