Java 无法解析';设置已启用';方法。安卓工作室

Java 无法解析';设置已启用';方法。安卓工作室,java,android,android-studio,Java,Android,Android Studio,我是android studio的新手。所以我为这类问题道歉。我一直在阅读关于如何使用setEnabled()的帖子;方法来启用和禁用底部。正如您可以在代码中看到的,每当选择radioGroup中的一个单选按钮时,我都会尝试启用以前禁用的按钮(通过xml使用android:enabled=“false”/>) 代码的“setEnabled”部分以红色突出显示,错误弹出:无法解析方法“setEnabled(boolean)” 这是代码。我想知道为什么这不起作用,以及如何修复它,而不仅仅是答案本身。

我是android studio的新手。所以我为这类问题道歉。我一直在阅读关于如何使用setEnabled()的帖子;方法来启用和禁用底部。正如您可以在代码中看到的,每当选择radioGroup中的一个单选按钮时,我都会尝试启用以前禁用的按钮(通过xml使用
android:enabled=“false”/>

代码的“setEnabled”部分以红色突出显示,错误弹出:无法解析方法“
setEnabled(boolean)

这是代码。我想知道为什么这不起作用,以及如何修复它,而不仅仅是答案本身。 先谢谢你

    public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radioButtonYes:
            if (checked)
                R.id.buttonNEXT.setEnabled(true);
            break;
        case R.id.radioButtonNo:
            if (checked)
                R.id.buttonNEXT.setEnabled(true);
                break;
        case R.id.radioButtonDontknow:
            if (checked)
                R.id.buttonNEXT.setEnabled(true);
                break;
    }
不要

R.id.buttonNEXT.setEnabled(true);
DO

((Button) findViewById(R.id.buttonNEXT)).setEnabled(true); 
最后

switch(view.getId()) {
    case R.id.radioButtonYes:
        if (checked)
            ((Button) findViewById(R.id.buttonNEXT)).setEnabled(true); 
            break;
不要

R.id.buttonNEXT.setEnabled(true);
DO

((Button) findViewById(R.id.buttonNEXT)).setEnabled(true); 
最后

switch(view.getId()) {
    case R.id.radioButtonYes:
        if (checked)
            ((Button) findViewById(R.id.buttonNEXT)).setEnabled(true); 
            break;
这是错误的

R.id.buttonNEXT.setEnabled(true);
R.id.buttonNEXT是创建按钮时必须使用的id(只是一个整数)

你应该做一些类似的事情

 Button myButton = (Button)findViewById(R.id.buttonNEXT);
然后,您可以调用Buttom拥有的所有方法

if (checked)
      myButton.setEnabled(true);
这是错误的

R.id.buttonNEXT.setEnabled(true);
R.id.buttonNEXT是创建按钮时必须使用的id(只是一个整数)

你应该做一些类似的事情

 Button myButton = (Button)findViewById(R.id.buttonNEXT);
然后,您可以调用Buttom拥有的所有方法

if (checked)
      myButton.setEnabled(true);

你应该这样使用它

public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();
    Button b=(Button)findViewById(R.id.buttonNEXT); //casted to button. use the type is used
    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radioButtonYes:
            if (checked)
                b.setEnabled(true); //change to this
            break;
        case R.id.radioButtonNo:
            if (checked)
                b.setEnabled(true); //change to this
                break;
        case R.id.radioButtonDontknow:
            if (checked)
                b.setEnabled(true); //change to this
                break;
    }

你应该这样使用它

public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();
    Button b=(Button)findViewById(R.id.buttonNEXT); //casted to button. use the type is used
    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radioButtonYes:
            if (checked)
                b.setEnabled(true); //change to this
            break;
        case R.id.radioButtonNo:
            if (checked)
                b.setEnabled(true); //change to this
                break;
        case R.id.radioButtonDontknow:
            if (checked)
                b.setEnabled(true); //change to this
                break;
    }

您试图将
setEnabled()
int
一起使用,这是不可能的,因为
R.id.someId
属于
int
类型。最好找到该id的视图,然后使用
setEnabled()

这很好用

((Button) findViewById(R.id.buttonNEXT)).setEnabled(true);

您试图将
setEnabled()
int
一起使用,这是不可能的,因为
R.id.someId
属于
int
类型。最好找到该id的视图,然后使用
setEnabled()

这很好用

((Button) findViewById(R.id.buttonNEXT)).setEnabled(true);


R.id.buttonNEXT
int
类型的,你不能用
setEnabled()
来做它。
R.id.buttonNEXT
int
类型的,你不能用
setEnabled()
来做它。告诉他你如何得到button对象,这就是他的问题所在。
R.id.buttonNEXT
属于
int
类型,您不能将
setEnabled()
用于它。看看其他人的帖子。@jackjay确实告诉他你如何得到button对象,这就是他的问题所在。
R.id.buttonNEXT
int
类型,你不能使用
setEnabled()
。看看别人的帖子。@jackjay确实很感谢你的回复!我把它修好了,效果很好,现在我明白我做错了什么。我计划将yes/no/notknow的响应发送到一个数据库,这就是我构建交换机外壳的原因。您认为这样做有效吗?因为您在所有三种情况下都启用了相同的按钮,我认为没有必要放置
开关盒
,除非您只有这三个单选按钮。非常感谢您的回复!我把它修好了,效果很好,现在我明白我做错了什么。我计划将yes/no/notknow的响应发送到一个数据库,这就是我构建交换机外壳的原因。您认为这样做有效吗?因为您在所有三种情况下都启用了相同的按钮,我认为,除非你只有这三个单选按钮,否则没有必要放置
开关盒
。虽然你的答案是正确的,但投下你的观点有利于安全。所以我不应该像我在代码中那样“暴露”视图?@DiegoFabiano实际上你在代码中没有找到视图,您需要做的是首先使用id找到您的视图,然后安全地将其转换为适当的类型,然后使用它。@jackjay ok建议已应用。但你说的安全是什么意思?。我很好奇,请回答:。。@CoDfather并不总是这样,但对于那些不扩展
View
class的类。这里的
按钮
类正在扩展
视图
类,因此没有错误。但是告诉编译器您期望的是哪种类型的
视图
是很好的。虽然您的答案是正确的,但是转换视图对安全性有好处。所以我不应该像在代码中那样“暴露”视图?@DiegoFabiano实际上您在代码中没有找到视图,您需要做的是首先使用id找到您的视图,然后安全地将其转换为适当的类型,然后使用它。@jackjay ok建议已应用。但你说的安全是什么意思?。我很好奇,请回答:。。@CoDfather并不总是这样,但对于那些不扩展
View
class的类。这里的
按钮
类正在扩展
视图
类,因此没有错误。但是告诉编译器您期望的是哪种类型的
视图
是很好的。