wake-up-neo.com

Android.widget, TextView kann nicht in Android.widget, Schaltfläche umgewandelt werden

Ich bekomme beim Starten meiner Aktivität immer einen Laufzeitfehler und es wird angezeigt, dass Android.widget.textview nicht in Android.widget.button umgewandelt werden kann.

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>

Was passiert hier? Ich habe es einige Male durchgemacht und kann nichts finden

Bearbeiten:

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

Ich habe das Logcat hinzugefügt. Aber ich habe keine Ahnung, was passiert 

Dies sind die wichtigen Informationen in Ihrer LogCat-Datei:

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)

Sie haben den Fehler richtig gelesen, es ist eine ClassCastException. Die Zeilen unter Caused by... zeigen an, wo der Fehler ausgelöst wurde, der sich in PlayScreen.onCreate() in Zeile 110 befindet. Wie ich am besten feststellen kann, Zeile 110 ist:

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

Aber diese Zeile ist in Ordnung und das XML für btnBattle sieht auch gut aus ...

Ich habe Ihre Aktivität mit Ihrem Layout selbst ausgeführt und keine Fehler erhalten. Hast du dein Projekt gereinigt? Oft werden dadurch diese "Phantom" -Fehler entfernt. (In Eclipse, Project -> Clean ... )


Ich habe einen Vorschlag, Sie haben viele Buttons, die ähnliche Aufgaben ausführen. Sie können dieselben Aktionen mit viel weniger Code ausführen, wenn Sie das XML-Attribut onClick verwenden. Erstellen Sie zunächst eine Methode (nennen Sie sie launchClick()) in Ihrer Aktivität wie folgt:

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

Und fügen Sie das Attribut Android:onClick zu jedem Button hinzu, für den Sie dieses Verhalten in play_screen.xml haben sollten:

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

Hoffentlich hilft das!

87
Sam

Project -> Clean kann dir helfen.

27
aviomaksim

sie versuchen, TextView in Button umzuwandeln. 

für TextView tun Sie dies:

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

für Button:

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

Ich verwende ein RelativeLayout mit 3 TextViews und 2 Schaltflächen. Ich bekomme den gleichen bizarren Fehler, wenn ich die Platzierung der TextViews mit dem grafischen Oberflächeneditor verschiebe. Wenn ich sie wieder an den ursprünglichen Ort versetze, wird der Fehler behoben. 

Ich kann den Fehler loswerden durch:

  1. Schneiden Sie alle Daten aus der fehlerhaften XML-Datei in die Zwischenablage aus.
  2. Speichern Sie das Projekt.
  3. Bereinigen Sie das Projekt (siehe Fehler in der XML-Datei).
  4. Fügen Sie den XML-Code zurück und speichern Sie
  5. Sauber
  6. Lauf

Dies scheint ein Fehler zu sein, da der XML-Code echt ist, aber zur Laufzeit nicht ordnungsgemäß erstellt wird.

Ich hoffe, es funktioniert für Sie ... Eclipse Java EE IDE für Webentwickler.

Version: Indigo Service Release 2Build id: 20120216-1857

1
bob

In Eclipse gehen Sie zu Projekt> Bereinigen, wählen Sie Ihr Projekt und alles ist ... Ihre App wird normal ausgeführt ...

1
Leonardo Sapuy
  1. Oder

IDs ändern 

  1. change itemes Id's

it help :D

0
Amir Bax

Stellen Sie zunächst sicher, dass alle TextView die richtige TextView in Ihrer .Java-Datei ... ansprechen.

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

Fehler wie Android.widget, TextView kann nicht in Android.widget umgewandelt werden. Die Schaltfläche wurde ausgelöst, weil wir manchmal Button anstelle von TextView verwiesen haben.

Wenn alles in Ordnung ist, bereinigen Sie Ihr Projekt und aktualisieren Sie es .. Es hat für mich funktioniert ..

0
Anil Chahal

Ich bin gerade auf das gleiche Problem gestoßen. Ich entschied mich jedoch dafür, nur "View" ohne Casting zu verwenden. Es funktioniert perfekt. "setOnClickListener" funktioniert in unserem Fall genauso.

z.B. .View button = v.findViewById(button_id); button.setOnClickListener(...) 

0
Kar Shiang Tey

Falls die Projektreinigung nicht funktioniert. Die Ursache kann mit use der gleichen ID für mehr als ein Element zusammenhängen.

Stellen Sie sicher, dass Sie bei der Zuweisung von IDs per Layout oder programmgesteuert nicht dupliziert werden.

Ich sah mich diesem Problem zu, während ich niedrige Zahlen als ID feststellte (wahrscheinlich keine bewährte Methode), da die IDs bei der Kollision mit RadioButton die ID überprüft haben. 

Prost

0
David Parés

Bitte fügen Sie Ihren Java-Code hinzu, um herauszufinden, wo das Problem auftritt. Dieses Problem tritt auf, wenn Sie versuchen, die Textansicht in eine Schaltfläche zu konvertieren.

0
knvarma