I keep getting a runtime error when launching my activity and it says android.widget.textview cannot be cast to 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>
What is happening here? I’ve gone through it a few times and can’t find anything
Edit:
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
This is the important information in your LogCat file:
You read the error correctly, it is a
ClassCastException. The lines belowCaused by...tell you where the error was thrown, which is inPlayScreen.onCreate()on line 110. As best I can tell line 110 is:But this line is fine and the XML for
btnBattlelooks fine too…I ran your Activity with your layout myself and didn’t get any errors. Have you cleaned your project? Often this will remove these "phantom" errors.
(In Eclipse, Project -> Clean…)
I do have one suggestion, you have a lot of Buttons that do similar tasks. You can do the same actions with much less code if you use the XML
onClickattribute. First create a method (call itlaunchClick()) in your Activity like so:And add the attribute
android:onClickto every Button that you should have this behavior inplay_screen.xml: