アクティビティを起動するとランタイムエラーが発生し続け、Android.widget.textviewをAndroid.widget.buttonにキャストできないと表示されますか?
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:tools="http://schemas.Android.com/tools"
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/RelativeLayout1"
Android:layout_width="fill_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
tools:ignore="HardcodedText" >
<TextView
Android:id="@+id/textViewName"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="false"
Android:layout_alignParentTop="false"
Android:text="Name:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewLevel"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentRight="true"
Android:layout_below="@+id/textViewName"
Android:text="Level:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewClass"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="false"
Android:layout_below="@+id/textViewLevel"
Android:text="Class:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewTitle"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBaseline="@+id/textViewClass"
Android:layout_alignBottom="@+id/textViewClass"
Android:layout_centerHorizontal="true"
Android:text="Title:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewXP"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/textViewTitle"
Android:layout_alignLeft="@+id/textViewTitle"
Android:text="XP:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewGold"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/textViewXP"
Android:layout_alignParentTop="true"
Android:text="Gold:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewLineBreak"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_below="@+id/textViewClass"
Android:text="________________________________________"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:visibility="invisible" />
<TextView
Android:id="@+id/textViewGoldValue"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:layout_toRightOf="@+id/textViewGold"
Android:text="0"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
Android:id="@+id/button3"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true"
Android:layout_alignParentLeft="true"
Android:layout_toLeftOf="@+id/textViewTitle"
Android:text="Stats" />
<Button
Android:id="@+id/button2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/button3"
Android:layout_alignParentLeft="true"
Android:layout_marginBottom="20dp"
Android:layout_toLeftOf="@+id/textViewTitle"
Android:text="Equipment" />
<Button
Android:id="@+id/button1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/button2"
Android:layout_alignParentLeft="true"
Android:layout_alignRight="@+id/button2"
Android:layout_marginBottom="22dp"
Android:text="Inventory" />
<Button
Android:id="@+id/Button01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBaseline="@+id/button1"
Android:layout_alignBottom="@+id/button1"
Android:layout_alignLeft="@+id/button4"
Android:layout_alignParentRight="true"
Android:text="Shop" />
<Button
Android:id="@+id/button5"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentRight="true"
Android:layout_below="@+id/button2"
Android:layout_toRightOf="@+id/textViewXP"
Android:text="Class Training" />
<Button
Android:id="@+id/button4"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/button5"
Android:layout_alignParentRight="true"
Android:layout_below="@+id/button1"
Android:text="Crafting" />
<TextView
Android:id="@+id/textView4"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_below="@+id/textViewLineBreak"
Android:text="HP:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewStrTitle"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/textViewLineBreak"
Android:layout_alignLeft="@+id/textViewGoldValue"
Android:text="N/A"
Android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
Android:id="@+id/textViewXPValue"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/textViewGoldValue"
Android:layout_below="@+id/textViewGoldValue"
Android:text="0"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewLevelValue"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/textViewClass"
Android:layout_toRightOf="@+id/textViewName"
Android:text="1"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/TextViewStrClass"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/textViewLineBreak"
Android:layout_alignLeft="@+id/textViewLevelValue"
Android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
Android:id="@+id/textViewRace"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_below="@+id/textViewClass"
Android:text="Race:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBaseline="@+id/textView4"
Android:layout_alignBottom="@+id/textView4"
Android:layout_toLeftOf="@+id/TextViewStrClass"
Android:text="10"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
Android:id="@+id/spinnerMonsters"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_below="@+id/textView4"
Android:layout_marginTop="50dp"
Android:layout_toLeftOf="@+id/btnBattle"
Android:entries="@array/Monsters"
Android:Prompt="@string/MonsterPrompt" />
<TextView
Android:id="@+id/textView2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/spinnerMonsters"
Android:layout_alignRight="@+id/textViewXPValue"
Android:text="10"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
Android:id="@+id/btnBattle"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentRight="true"
Android:layout_alignTop="@+id/spinnerMonsters"
Android:text="Battle!" />
<TextView
Android:id="@+id/textView3"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/textViewStrTitle"
Android:layout_alignRight="@+id/spinnerMonsters"
Android:layout_marginRight="14dp"
Android:text="/"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewXpNextLevel"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBaseline="@+id/textViewLevel"
Android:layout_alignBottom="@+id/textViewLevel"
Android:layout_alignLeft="@+id/btnBattle"
Android:text="100"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textViewBattleResults"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_below="@+id/spinnerMonsters"
Android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
Android:id="@+id/textViewStrRace"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/textView1"
Android:layout_toRightOf="@+id/textViewClass"
Android:text="l"
Android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
Android:id="@+id/textViewStrAlliance"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_above="@+id/textView2"
Android:layout_alignParentRight="true"
Android:layout_toRightOf="@+id/textViewStrTitle"
Android:text="Small Text"
Android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
Android:id="@+id/textViewAlliance"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_below="@+id/textViewTitle"
Android:layout_toRightOf="@+id/button1"
Android:text="Alliance:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
Android:id="@+id/textView6"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/textViewAlliance"
Android:layout_below="@+id/textViewLineBreak"
Android:text="MP:"
Android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
ここで何が起きてるの?何回か試してみたが何も見つからない
編集:
09-17 18:28:51.485: E/AndroidRuntime(724): FATAL EXCEPTION: main
09-17 18:28:51.485: E/AndroidRuntime(724): Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.intent_buttontests/com.example.intent_buttontests.PlayScreen}: Java.lang.ClassCastException: Android.widget.TextView cannot be cast to Android.widget.Button
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1956)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1981)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.app.ActivityThread.access$600(ActivityThread.Java:123)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1147)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.os.Handler.dispatchMessage(Handler.Java:99)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.os.Looper.loop(Looper.Java:137)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.app.ActivityThread.main(ActivityThread.Java:4424)
09-17 18:28:51.485: E/AndroidRuntime(724): at Java.lang.reflect.Method.invokeNative(Native Method)
09-17 18:28:51.485: E/AndroidRuntime(724): at Java.lang.reflect.Method.invoke(Method.Java:511)
09-17 18:28:51.485: E/AndroidRuntime(724): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:784)
09-17 18:28:51.485: E/AndroidRuntime(724): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:551)
09-17 18:28:51.485: E/AndroidRuntime(724): at dalvik.system.NativeStart.main(Native Method)
09-17 18:28:51.485: E/AndroidRuntime(724): Caused by: Java.lang.ClassCastException: Android.widget.TextView cannot be cast to Android.widget.Button
09-17 18:28:51.485: E/AndroidRuntime(724): at com.example.intent_buttontests.PlayScreen.onCreate(PlayScreen.Java:110)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.app.Activity.performCreate(Activity.Java:4465)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1049)
09-17 18:28:51.485: E/AndroidRuntime(724): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1920)
09-17 18:28:51.485: E/AndroidRuntime(724): ... 11 more
Logcatを追加しました。しかし、私は何が起こっているのか分かりません
これは、LogCatファイルの重要な情報です。
_Caused by: Java.lang.ClassCastException: Android.widget.TextView cannot be cast to Android.widget.Button
at com.example.intent_buttontests.PlayScreen.onCreate(PlayScreen.Java:110)
_
エラーを正しく読みました。ClassCastException
です。 _Caused by...
_の下の行は、エラーがスローされた場所を示しています。これは、110行目のPlayScreen.onCreate()
にあります。
_Button btnBattle = (Button) findViewById(R.id.btnBattle);
_
しかし、この行は問題なく、btnBattle
のXMLも問題ありません...
自分でレイアウトを使用してアクティビティを実行しましたが、エラーは発生しませんでした。プロジェクトをクリーンアップしましたか?多くの場合、これらの「ファントム」エラーは削除されます。 (Eclipseでは、プロジェクト-> クリーン...)
提案が1つあります。同様のタスクを実行するボタンがたくさんあります。 XML onClick
属性を使用すると、はるかに少ないコードで同じアクションを実行できます。最初にアクティビティでメソッドを作成します(launchClick()
と呼びます):
_public void launchClick(View v) {
Intent intent;
switch(v.getId()) {
case R.id.button1:
intent = new Intent(PlayScreen.this, Inventory.class);
break;
case R.id.button2:
intent = new Intent(PlayScreen.this, Equipment.class);
break;
// etc, etc
}
startActivityForResult(intent, 0);
};
_
そして、属性_Android:onClick
_を、_play_screen.xml
_でこの動作を行う必要があるすべてのボタンに追加します。
_<Button
Android:id="@+id/button3"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true"
Android:layout_alignParentLeft="true"
Android:layout_toLeftOf="@+id/textViewTitle"
Android:onClick="launchClick"
Android:text="Stats" />
_
お役に立てば幸いです!
プロジェクト->クリーンが役立ちます。
TextView
をButton
にキャストしようとしています。
TextView
の場合:
TextView tv = (TextView)findviewById(R.id.your textviewid present in xml layout file);
Button
の場合:
Button btn1 = (Button)findviewById(R.id.your buttonid present in xml layout file);
3つのtextViewsと2つのボタンを持つRelativeLayoutを使用しています。グラフィカルインターフェイスエディターを使用してtextViewsの配置を移動すると、同じ奇妙なエラーが発生します。元の場所に戻すと、エラーは消えます。
私は次の方法でエラーを取り除くことができます:
XMLコードは正当であるため、これはバグのように見えますが、実行時に適切にビルドされません。
それがあなたのために働くことを願っています。 Eclipse Java EE IDE Web開発者向け。
バージョン:Indigo Service Release 2ビルドID:20120216-1857
Eclipseで[プロジェクト]> [クリーン]に移動し、プロジェクトを選択すると、すべてが完了します。アプリは正常に実行されます...
アイテムIDの変更
it help :D
最初に、すべてのTextView
が.Javaファイル内の正しいTextView
をアドレス指定していることを確認してください。このように..
TextView textview1 = (TextView) findViewById(R.id.textview1);
Android.widget、textViewのようなエラーは、しばらくの間Button
ではなくTextView
を参照したため、Android.widget、buttonにキャストできません。
すべてが問題なければ、プロジェクトをクリーンアップして更新してください。
私はちょうど同じ問題に遭遇しました。ただし、キャストせずに「表示」のみを使用することにしました。完璧に機能します。 「setOnClickListener」は、このケースでも同じように機能します。
例えばView button = v.findViewById(button_id); button.setOnClickListener(...)
プロジェクトのクリーンが機能しない場合。原因は、複数のアイテムの同じIDを使用に関連している可能性があります。
IDをレイアウトまたはプログラムで割り当てる場合は、複製されない
IDがRadioButtonと衝突する場所でIDを確認したため、IDとして低い数字を推測しているときに(おそらくベストプラクティスではない)この問題に直面しました。
乾杯
Javaコードを添付して、問題が発生している場所を見つけてください。この問題は、textviewをボタンに変換しようとしたときに発生します。