web-dev-qa-db-fra.com

Android.widget, textView ne peut pas être converti en Android.widget, bouton

Je continue à avoir une erreur d'exécution lors du lancement de mon activité et il est indiqué que Android.widget.textview ne peut pas être converti en 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>

Que se passe-t-il ici? Je l'ai traversé plusieurs fois et je ne trouve rien

Modifier:

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

J'ai ajouté le logcat. Mais je n'ai aucune idée de ce qui se passe 

Voici les informations importantes dans votre fichier 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)

Vous lisez correctement l’erreur, c’est une ClassCastException. Les lignes ci-dessous Caused by... indiquent l'endroit où l'erreur a été générée, ce qui se trouve dans PlayScreen.onCreate() à la ligne 110. Autant que je sache, la ligne 110 est la suivante:

Button btnBattle = (Button) findViewById(R.id.btnBattle);

Mais cette ligne est correcte et le code XML pour btnBattle est également correct ...

J'ai dirigé votre activité avec votre mise en page moi-même et je n'ai pas d'erreur. Avez-vous nettoyé votre projet? Cela supprimera souvent ces erreurs "fantômes" . (Dans Eclipse, Projet -> Nettoyer ... )


J'ai une suggestion, vous avez beaucoup de boutons qui effectuent des tâches similaires. Vous pouvez effectuer les mêmes actions avec beaucoup moins de code si vous utilisez l'attribut XML onClick. Commencez par créer une méthode (appelez-la launchClick()) dans votre activité de la manière suivante:

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);
};

Et ajoutez l'attribut Android:onClick à chaque bouton pour lequel vous devriez avoir ce comportement dans 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" />

J'espère que cela pourra aider!

87
Sam

Projet -> Nettoyer peut vous aider.

27
aviomaksim

vous essayez de convertir TextView en Button

pour TextView faire ceci:

TextView tv = (TextView)findviewById(R.id.your textviewid present in xml layout file);

pour Button:

Button btn1 = (Button)findviewById(R.id.your buttonid present in xml layout file);
3
sanjay

J'utilise un RelativeLayout avec 3 textViews et 2 boutons. Je reçois la même erreur bizarre lorsque je déplace l’emplacement de textViews à l’aide de l’éditeur d’interface graphique. Si je les remets à leur emplacement d'origine, l'erreur disparaîtra. 

Je peux me débarrasser de l'erreur en:

  1. Couper toutes les données du fichier XML incriminé dans le presse-papiers.
  2. Enregistrez le projet.
  3. Nettoyer le projet (voir erreur dans le fichier XML)
  4. Recopie le code XML et sauvegarde
  5. Nettoyer
  6. Courir

Cela semble être un bogue, car le code XML est légitime, mais n'est pas construit correctement au moment de l'exécution.

J'espère que cela fonctionne pour vous . Eclipse Java EE IDE pour les développeurs Web.

Version: Indigo Service Release 2. Identifiant: 20120216-1857

1
bob

Dans Eclipse, accédez à Projet> Nettoyer, choisissez votre projet et c'est tout ... Votre application s'exécutera normalement ...

1
Leonardo Sapuy
  1. Ou

Changer les identifiants 

  1. change itemes Id's

it help :D

0
Amir Bax

Tout d’abord, assurez-vous que tous les TextViews s’adressant à la bonne TextView dans votre fichier .Java ..

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

Erreur comme Android.widget, textView ne peut pas être converti en Android.widget, bouton déclenché car nous avons parfois fait référence à Button au lieu de TextView.

Si tout va bien, nettoyez votre projet et actualisez-le. Cela a fonctionné pour moi.

0
Anil Chahal

Je viens de rencontrer le même problème. Cependant, j'ai décidé d'utiliser uniquement "View" sans casting. Ça fonctionne parfaitement. "setOnClickListener" fonctionne de la même manière dans notre cas.

par exemple .View button = v.findViewById(button_id); button.setOnClickListener(...) 

0
Kar Shiang Tey

Dans le cas où le projet nettoie ne fonctionne pas. La cause peut être liée à utiliser le même ID sur plusieurs éléments.

Assurez-vous, lors de l’attribution des ID via la mise en page ou par programme, que ne sont pas dupliqués.

J'ai fait face à ce problème tout en considérant les faibles nombres comme identifiant (probablement pas une pratique exemplaire), car les identifiants en collision avec RadioButton étaient des identifiants vérifiés. 

À votre santé

0
David Parés

Veuillez attacher votre code Java pour savoir où le problème se produit. Ce problème survient lorsque vous essayez de convertir la vue texte en bouton.

0
knvarma