我在启动活动时遇到运行时错误,并说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
答案 0 :(得分:87)
我添加了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()
中。我最好能告诉第110行:
Button btnBattle = (Button) findViewById(R.id.btnBattle);
但这条线很好,btnBattle
的XML看起来也很好......
我自己用你的布局运行你的Activity并没有得到任何错误。你清理过你的项目了吗?通常这会消除这些“幻影”错误。 (在Eclipse中,项目 - &gt; 清理...... )
我有一个建议,你有很多按钮执行类似的任务。如果使用XML onClick
属性,则可以使用更少的代码执行相同的操作。首先在Activity中创建一个方法(称之为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" />
希望有所帮助!
答案 1 :(得分:27)
项目 - &gt;干净可以帮助你。
答案 2 :(得分:3)
您正在尝试将TextView
投射到Button
。
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 :(得分:1)
在Eclipse中转到Project&gt;清洁,选择你的项目,这就是......你的应用程序将正常运行......
答案 4 :(得分:1)
我使用了包含3个textViews和2个按钮的RelativeLayout。当我使用图形界面编辑器移动textViews的位置时,我得到了同样奇怪的错误。如果我将它们放回原来放置的位置,那么错误就会消失。
我可以通过以下方式摆脱错误:
这似乎是一个错误,因为XML代码是合法的,但不能在运行时正确构建。
希望它适合你。 面向Web开发人员的Eclipse Java EE IDE。
版本:Indigo Service Release 2 构建ID:20120216-1857
答案 5 :(得分:0)
请附上您的java代码以找出问题发生的位置。当您尝试将textview转换为按钮时会出现此问题。
答案 6 :(得分:0)
首先确保所有TextView
在.java文件中寻找正确的TextView
。
像这样......
TextView textview1 = (TextView) findViewById(R.id.textview1);
像Android.widget一样错误,textView无法强制转换为android.widget,因为有些时候我们引用了Button
而不是TextView
。
如果一切正常,请清理你的项目并刷新..它对我有用..
答案 7 :(得分:0)
或
它有用:D
答案 8 :(得分:0)
我刚遇到同样的问题。但是,我决定只使用&#34; View&#34;没有铸造。它完美地运作。 &#34; setOnClickListener&#34;我们的情况也是如此。
e.g。
View button = v.findViewById(button_id);
button.setOnClickListener(...)
答案 9 :(得分:0)
如果项目清理不起作用。原因可能与多个项目上的使用相同ID 有关。
确保在通过布局或编程方式分配ID时,不重复。
我在将数字作为ID(可能不是最佳做法)时,面临这个问题,因为ID与RadioButton检查ID相冲突。
干杯
答案 10 :(得分:0)
我遇到过类似的问题,我的问题是ImageView而不是TextView,当我回去检查活动时,发现已经将变量声明为Button,然后将变量分配给findViewById(R .id.ivrest),其中ivRest指的是ImageView,因此只需确保您是否声明了具有特定类型的变量,则在重新分配该变量时,该变量应为同一类型