如何在没有用户输入时禁用按钮?

时间:2014-01-27 18:32:12

标签: android while-loop

我的目标是在编辑文本字段中获取输入。只要用户没有输入所有细节,我们的想法是禁用“提交”按钮。但是我在尝试这样做时遇到了问题。

我对Intent或屏幕没有问题。

代码:

public class Welcome extends Activity  
{

EditText efn,eln,eage;
Button submit;


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);




    efn=(EditText)findViewById(R.id.fname);
    eln=(EditText)findViewById(R.id.lname);
    eage=(EditText)findViewById(R.id.age);
    submit=(Button)findViewById(R.id.submit);


    submit.setEnabled(CheckIfOkInput());

                                        // I guess the problem is over here <--
if(CheckIfOkInput()==false)
    {
        while(CheckIfOkInput())
        {
            efn=(EditText)findViewById(R.id.fname);
            eln=(EditText)findViewById(R.id.lname);
            eage=(EditText)findViewById(R.id.age);
        }

        submit.setEnabled(true);
    }



    submit.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {


                Intent iHome=new Intent (Welcome.this,Home_page.class);
                String ln=eln.getText().toString();
                String fn=efn.getText().toString();
                int age=Integer.valueOf (eage.getText().toString());

                iHome.putExtra("fname", fn);
                iHome.putExtra("lname", ln);
                iHome.putExtra("age", age);

                startActivity(iHome);



        }
    });


}

     public boolean CheckIfOkInput()
{

    if(this.eln.getText().toString()==""||this.efn.getText().toString()=="")
    {
        return false;
    }


    return true;

}

 }

此代码的结果是“提交”按钮会一直被禁用。

希望你们能帮助我。

提前致谢,

的Yaniv。

2 个答案:

答案 0 :(得分:2)

您可以在每个EditText上添加一个监听器来制作类似以下代码的内容,当EditText的文字发生变化时,您可以验证EditText是否都有文字。 顺便说一句,使用.equals方法比较字符串,如果"".equals(this.eln.getText().toString())返回null,您可以使用this.eln.getText().toString()来避免nullpointerexceptions。

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(!"".equals(this.eln.getText().toString()) && !"".equals(this.efn.getText().toString()){
            submit.setEnabled(true);
        }
    }
}

答案 1 :(得分:0)

不要使用一段时间,因为你会一直“做”某事。你需要一个倾听者。就像一个按钮的onclick-listener,然后是编辑文本字段的on-change listener

方法:制作一个听众,每次(对于初学者,您可以稍后更新)您的更改已注册,您检查输入字段是否为空。如果是,则禁用该按钮,否则启用它。

很容易找到changelistener,例如:Counting Chars in EditText Changed Listener

该问题中的代码是关于计算字符的,但这几乎就是你想要的:计算字符数,如果它们是0(或不是0)做某事。