Java 当开关关闭时,如何使android编辑文本不可编辑?

Java 当开关关闭时,如何使android编辑文本不可编辑?,java,android,Java,Android,我是android开发的新手,在将开关设置为off后,我很难使我的editText不可编辑。问题是开关功能不起作用。即使设置为关闭,我仍然可以编辑文本。 这是我的密码: public void onCreate(Bundle savedInstanceState) { this.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDE

我是android开发的新手,在将开关设置为off后,我很难使我的editText不可编辑。问题是开关功能不起作用。即使设置为关闭,我仍然可以编辑文本。 这是我的密码:

public void onCreate(Bundle savedInstanceState) {
        this.getWindow().setSoftInputMode(
                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        final View switch1 = (Switch) findViewById(R.id.editSwitch);
        final EditText mEdit = (EditText) findViewById(R.id.bioTxt);
        switch1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (switch1.getContext().toString().equals("On")) {

                    mEdit.setEnabled(true);
                }

                else if (switch1.getContext().toString().equals("Off")) {

                    EditText mEdit = (EditText) findViewById(R.id.bioTxt);
                    mEdit.setEnabled(false);
                }
            }
        });

    };
}

你想在这里干什么?视图上的getContext返回拥有它的活动。它不会返回任何将变为“开”或“关”的内容。您需要调用其他函数。我不确定是哪个,因为它看起来像是一个自定义视图。

Switch
有一个函数
isChecked()
,如果开关处于“开”位置,该函数将返回true。因此,onClick方法可以是:

public void onClick(View v) {
    mEdit.setEnabled(switch1.isChecked());
}

这里什么不起作用?开关功能不起作用。即使设置为off,我仍然可以编辑文本。删除else语句中的EditText行。是否将其放在switch语句之前的外部?我有一个文本编辑视图,我想禁用在开关设置为off时键入这些文本编辑的功能。是,但我不知道你的开关是什么类型的视图,它有什么功能。我知道的是,你肯定不想在那里调用getContext。我使用的是相对布局,带有文本视图,切换代码是:啊,不知道有一个切换类。Try:开关=(开关)v;选中布尔值=switch.isChecked();如果(checked==true){mEdit.setEnabled(true);}如果(checked==false){mEdit.setEnabled(false);}我这样做了,但结果还是一样。@user2206030-确保switch1的类型是
Switch
,而不是
View
。我使用的是相对布局,对于文本视图,开关xml是:–@user2206030-是的,xml很好。应该将代码中的
开关1
声明(当前为
最终视图开关1
)更改为
最终开关开关1
public void onClick(View v) {
    mEdit.setEnabled(switch1.isChecked());
}