我刚刚开始使用Android,但似乎遇到了一个我根本无法找到答案的问题。我在这一行收到错误“无法从视图转换为按钮”:
Button myButton = (Button)findViewById(R.id.my_button);
我尝试了许多不同的东西,我已经找到了答案,但由于某种原因,它只是拒绝正常工作。如果有人能指出我正确的方向,那将是最受欢迎的。
提前感谢。
答案 0 :(得分:6)
试试这个,
android.widget.Button myButton = (android.widget.Button)findViewById(R.id.my_button);
答案 1 :(得分:5)
异常是ClassCastException吗?如果是这样,那么您使用标识my_button
查找的视图不是按钮。如果它是NullPointerException,那么没有id为my_button的视图。这可能是因为在您尝试查找视图之前未调用setContent()。
答案 2 :(得分:3)
我也遇到过这个错误,无法找到原因。就像Joe Plante指出的那样,如果它不起作用那么就会出现问题......
在我的场景中,我碰巧给了相对布局一个id(即点击图形布局中的空白区域)与我的按钮相同的ID。这导致FindViewById(R.id.my_button)返回错误的View;
要在xml中检查一下,看看是否有
<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/btnRecipe"
答案 3 :(得分:1)
我的猜测是你的XML视图(my_button)不是一个按钮。否则,您确定按钮的ID是否正确?它应该读作“android:id="@+id/my_button"
”以及宽度和高度。请发布您的XML文件。
答案 4 :(得分:1)
除了已提及的所有内容之外,我还建议您查看文档顶部的import语句。我发现这个特别令人讨厌:
import android.R;
这样做意味着每次在程序的其余部分引用R.id.my_button时,它都会查看Android的默认资源,而不是您自己的资源。
答案 5 :(得分:1)
我实际上在我正在做的代码中遇到过这个问题。基本上它是“如果它看起来像一只鸭子,如果它听起来像一只鸭子,那么为什么血腥的插入咒骂你不是把它视为鸭子吗?”情况。我改为相当于android:id =“@ + id / someid”,将它改为android:id =“@ + id / someid_x”(不要忘记在Java中也这样做),一切都像再次发条。
所以,在我的情况下,我相信可能有一个ID引用了R表中的另一个对象,并且它得到了错误或非预期的项目。最奇怪的是,当将一组视图放入RelativeLayout
时,它就开始发生了答案 6 :(得分:0)
这个类转换异常发生在调用窗口小部件类型不匹配时,就像你有一个Image View image1,但是你在java代码中调用它 ImageButton ib =(ImageButto)findViewById(R.id.image1); 那个时候你得到像这样的错误信息
答案 7 :(得分:0)
检查你是否错过了这一行
import android.view.View;
答案 8 :(得分:0)
我在Android Studio 3.5中遇到了这个问题,IDE并没有通过智能发现库。
我通过手动插入库解决了这个问题:
import android.widget.Button;
答案 9 :(得分:0)
在我的情况下,是导入android.widget.Button失败。一旦完成,错误就解决了。
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Button;
答案 10 :(得分:0)
就我而言,我创建了一个名为“按钮”的活动。这与按钮小部件矛盾。当我用“ ButtonActivity”更改活动名称时,问题就消失了。