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
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!
Projet -> Nettoyer peut vous aider.
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);
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:
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
Dans Eclipse, accédez à Projet> Nettoyer, choisissez votre projet et c'est tout ... Votre application s'exécutera normalement ...
Changer les identifiants
it help :D
Tout d’abord, assurez-vous que tous les TextView
s 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.
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(...)
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é
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.