在android中像是一个登陆的界面,有这样一个规则,只有用户名和密码都不为空时,登陆按钮才可用,只要一个不为空就按钮不可用。
我在OnCreate方法中这样写
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo02);
mbtn = (Button) findViewById(R.id.btn_test); etUsername = (EditText) findViewById(R.id.editText1);
etPassword = (EditText) findViewById(R.id.editText2);
if (etPassword.getText().length() == 0
|| etUsername.getText().length() == 0) {
mbtn.setEnabled(false);
} else {
mbtn.setEnabled(true);
}
}
运行之后Button的状态没有改变!请问要怎么写才会实现该功能?

解决方案 »

  1.   

    怎么是onCreate内判断,应该是在etUsername 和 etPassword 内监听TextChanged事件来判断,在onCreate内注册addTextChangedListener。
        TextWatcher txWatcher=new TextWatcher()
        {
          
          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count)
          {
            // TODO Auto-generated method stub
            
          }
          
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after)
          {
            // TODO Auto-generated method stub
            
          }
          
          @Override
          public void afterTextChanged(Editable s)
          {
           if ((etPassword.getText().length() == 0)|| (etUsername.getText().length() == 0)) {
              mbtn.setEnabled(false);
           }  else {
              mbtn.setEnabled(true);
            }
          }
        };    
        etUsername.addTextChangedListener(txWatcher);
        etPassword.addTextChangedListener(txWatcher);
      

  2.   

    可以这样判断吧!只是LZ写错了!用下面那个试试!
    if (etPassword.getText().equals("")|| etUsername.getText().equals("")){
    ....
      

  3.   

    一楼的是对的. 需要用listener时时判断输入字符的变化.