web-dev-qa-db-ja.com

Android.widget、textViewをAndroid.widget、buttonにキャストできません

アクティビティを起動するとランタイムエラーが発生し続け、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
26
Adariel Lzinski

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" />
_

お役に立てば幸いです!

87
Sam

プロジェクト->クリーンが役立ちます。

27
aviomaksim

TextViewButtonにキャストしようとしています。

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
sanjay

3つのtextViewsと2つのボタンを持つRelativeLayoutを使用しています。グラフィカルインターフェイスエディターを使用してtextViewsの配置を移動すると、同じ奇妙なエラーが発生します。元の場所に戻すと、エラーは消えます。

私は次の方法でエラーを取り除くことができます:

  1. 問題のあるXMLファイルからすべてのデータをクリップボードに切り取ります。
  2. プロジェクトを保存します。
  3. プロジェクトをクリーンアップします(XMLファイルのエラーを参照)
  4. XMLコードを貼り付けて保存します
  5. クリーン
  6. 走る

XMLコードは正当であるため、これはバグのように見えますが、実行時に適切にビルドされません。

それがあなたのために働くことを願っています。 Eclipse Java EE IDE Web開発者向け。

バージョン:Indigo Service Release 2ビルドID:20120216-1857

1
bob

Eclipseで[プロジェクト]> [クリーン]に移動し、プロジェクトを選択すると、すべてが完了します。アプリは正常に実行されます...

1
Leonardo Sapuy
  1. または

アイテムIDの変更

it help :D

0
Amir Bax

最初に、すべてのTextViewが.Javaファイル内の正しいTextViewをアドレス指定していることを確認してください。このように..

TextView textview1 = (TextView) findViewById(R.id.textview1);

Android.widget、textViewのようなエラーは、しばらくの間ButtonではなくTextViewを参照したため、Android.widget、buttonにキャストできません。

すべてが問題なければ、プロジェクトをクリーンアップして更新してください。

0
Anil Chahal

私はちょうど同じ問題に遭遇しました。ただし、キャストせずに「表示」のみを使用することにしました。完璧に機能します。 「setOnClickListener」は、このケースでも同じように機能します。

例えばView button = v.findViewById(button_id); button.setOnClickListener(...)

0
Kar Shiang Tey

プロジェクトのクリーンが機能しない場合。原因は、複数のアイテムの同じIDを使用に関連している可能性があります。

IDをレイアウトまたはプログラムで割り当てる場合は、複製されない

IDがRadioButtonと衝突する場所でIDを確認したため、IDとして低い数字を推測しているときに(おそらくベストプラクティスではない)この問題に直面しました。

乾杯

0
David Parés

Javaコードを添付して、問題が発生している場所を見つけてください。この問題は、textviewをボタンに変換しようとしたときに発生します。

0
knvarma