Android.widget,textView无法强制转换为android.widget,按钮

启动我的活动时我一直收到运行时错误,并说android.widget.textview无法转换为android.widget.button?

XML:

          

这里发生了什么? 我已经经历了几次而找不到任何东西

编辑:

 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 

Solutions Collecting From Web of "Android.widget,textView无法强制转换为android.widget,按钮"

我添加了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中, Project – > Clean …


我有一个建议,你有很多按钮做类似的任务。 如果使用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:

  

希望有所帮助!

项目 – >清洁可以帮助你。

您正在尝试将TextViewButton

对于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); 

在Eclipse中,转到Project> Clean,选择你的项目,这就是…你的应用程序将正常运行…

我使用的RelativeLayout有3个textViews和2个按钮。 当我使用图形界面编辑器移动textViews的位置时,我得到了同样奇怪的错误。 如果我将它们放回原来放置的位置,错误就会消失。

我可以通过以下方式摆脱错误:

  1. 将有问题的XML文件中的所有数据剪切到剪贴板。
  2. 保存项目。
  3. 清理项目(请参阅XML文件中的错误)
  4. 粘贴XML代码并保存
  5. 清洁

这似乎是一个错误,因为XML代码是合法的,但不能在运行时正确构建。

希望对你有效。 面向Web开发人员的Eclipse Java EE IDE。

版本:Indigo Service Release 2 Build id:20120216-1857

请附上您的java代码以找出问题发生的位置。 当您尝试将textview转换为按钮时会出现此问题。

  1. 项目>清洁

要么

  1. 改变迭代Id

它有帮助:D

首先确保所有TextView在.java文件中寻址正确的TextView ..就像这样..

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

像Android.widget一样的错误,textView无法强制转换为android.widget,因为有些时候我们引用了Button而不是TextView

如果一切正常,那么清理你的项目并刷新..它对我有用..

我刚遇到同样的问题。 但是,我决定只使用“视图”而不进行投射。 它完美地运作。 “setOnClickListener”对我们的情况也是一样的。

例如, View button = v.findViewById(button_id); button.setOnClickListener(...) View button = v.findViewById(button_id); button.setOnClickListener(...)

如果项目清理不起作用。 原因可能与在多个项目上使用相同的ID有关。

确保在通过布局或以编程方式分配ID时, 不会重复。

我在将ID作为ID(可能不是最佳实践)的时候面对这个问题,因为ID与RadioButton检查ID相冲突。

干杯