Java 如何禁用表单中的按钮,直到用户填写重要字段

Java 如何禁用表单中的按钮,直到用户填写重要字段,java,android,Java,Android,我有一张用户将填写的表格, 但是,我有一些字段需要用户填写: -案例名称 -箱子 -CaseDurationH,CaseDurationM(代表时间) -性别选举 然后用户还应填写CasePic或CaseTooth 如果用户填写这5个重要字段,则将启用“下一步”按钮,否则将禁用该按钮 这是我的代码,但它不完整,因为我不知道如何完成它 public class TestActivity extends Activity { /** Called when the activity is firs

我有一张用户将填写的表格, 但是,我有一些字段需要用户填写: -案例名称 -箱子 -CaseDurationH,CaseDurationM(代表时间) -性别选举 然后用户还应填写CasePic或CaseTooth 如果用户填写这5个重要字段,则将启用“下一步”按钮,否则将禁用该按钮

这是我的代码,但它不完整,因为我不知道如何完成它

 public class TestActivity extends Activity {
/** Called when the activity is first created. */
EditText edit1;
EditText edit2;
EditText edit3;
Button button;
String test1;
 RadioGroup GenderSelection;
 Spinner CaseDurationH, CaseDurationM;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // Your initialization code...
    // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            edit1= (EditText) findViewById(R.id.edit1);
            edit2= (EditText) findViewById(R.id.edit2);
            GenderSelection = (RadioGroup) findViewById(R.id.radioGroup);
            button=(Button) findViewById(R.id.button);
            CaseDurationH = (Spinner) findViewById(R.id.Shr);
            CaseDurationM = (Spinner) findViewById(R.id.Smin);


   TextWatcher watcher = new LocalTextWatcher();
    edit1.addTextChangedListener(watcher);
    edit2.addTextChangedListener(watcher);
    //radiogroup();
    int id = GenderSelection.getCheckedRadioButtonId();

    if (id == -1){
        //no item selected
        button.setEnabled(false);
    }
    else{
        if (id == R.id.radio0){
            //Do something with the button
            button.setEnabled(true);
        }  else{
            if (id == R.id.radio1){
                //Do something with the button
                button.setEnabled(true);
            } else{
                if (id == R.id.radio2){
                    //Do something with the button
                    button.setEnabled(true);
                }

    updateButtonState();}}}
}

void updateButtonState() {
    boolean enabled;
    if(checkEditText(edit1) && checkEditText(edit2)) button.setEnabled(false);
    else button.setEnabled(true);
        }

private boolean checkEditText(EditText edit) {
    return edit.getText().length() == 0;
}

      private class LocalTextWatcher implements TextWatcher {
    public void afterTextChanged(Editable s) {
        updateButtonState();
    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        // TODO Auto-generated method stub  
    }}}

大多数
View
类都支持“事件监听器”,当某个事件发生时会调用这些类(在Android中,这些类通常在用户做某事时调用)

对于
RadioGroup
,一种方法是。您可以通过
RadioGroup
的方法将
OnCheckedChangeListener
设置到
RadioGroup
上。此方法类似于当前用于
TextView
addTextChangedListener()
(另一个侦听器)方法


我建议您查看一下,它为您提供了所有这些信息。

您看到的问题是什么?您的逻辑看起来很合理(虽然不完整),但您在使用某些对象之前没有初始化它们……这是您的问题吗?我的问题是我知道如何
将TextChangedListener(watcher)
添加到文本中,但我如何才能为其他类型执行此操作?像ImageView、Spinner、RadioGroup一样,还有如何放置允许用户填充CasePic或CaseClothers的代码。您应该编辑您的问题并将其放在底部。因为你的问题目前的措辞方式,很难判断你的问题是什么。我应该把整个班级放在一起吗?你应该放一个适当的问题。我尝试使用RadioGroup.OnCheckedChangeListener,但它给了我一个错误:(在不知道错误的情况下,几乎无法提供帮助。这是您应该在问题中输入的重要信息。好的,很抱歉我没有提到:$请耐心等待我,如果我打扰您,我真的很抱歉,错误是:方法OnCheckdChangeListener(TextWatcher)类型未定义。请帮助我,实际上我昨天就被困在这里了。您需要为
setOnCheckedChangeListener()
方法实现不同的接口才能工作。