如果陈述仅检查一次

时间:2018-08-04 23:03:47

标签: java android if-statement button android-edittext

我希望我的btnsave仅在editText中有东西时才能工作。 首先,启动应用程序时,editText中没有任何内容时,我的代码有效(btnsave不起作用)。但是,当我在editText中键入内容时,我希望btnsave能够正常工作。但不是!没用我认为如果语句只能运行一次。

出什么问题了? 我希望这段代码在应用程序运行时永久运行。

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

    btnSave = (Button) findViewById(R.id.btnSave);
    editText = (EditText) findViewById(R.id.editText);

    if (!editText.getText().toString().matches(""))
        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this,"H", Toast.LENGTH_SHORT).show();
            }
        });

}

换句话说

btnAdd = (Button) findViewById(R.id.btnAdd);
editText = (EditText) findViewById(R.id.editText);

if (editText.getText().toString().matches(""))
    btnAdd.setEnabled(false);
else
    btnAdd.setEnabled(true);

应用启动时,btn被禁用(因为editText为空),但是当我在editText中键入文本时,预计btn将被启用,但不会启用!

我认为当我在editText中输入sth时,它不会重新检查条件。为什么?

2 个答案:

答案 0 :(得分:0)

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if (charSequence.toString().trim().length() > 0)  {
                    btnAdd.setEnabled(false);
                } else {
                    btnAdd.setEnabled(true);
                }
            }
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

答案 1 :(得分:0)

您应遵循以下逻辑:

  1. 创建并实现onClickListener。
  2. 指定条件语句。
  3. 执行操作。

以下代码段应满足您的需求:

btn.setOnClickListener(newView.OnClickListener() {
    @Override
    public void onClick(View view){
    if(!editText.getText().toString().matches("")){
        Toast.makeText(MainActivity.this, "H", Toast.LENGTH_SHORT).show();
    }
});

如果要使按钮在EditText中有文本时可用,而在没有文本时不可用,则可以使用以下属性:

btn.setClickable(true);

只需在条件语句中使用这一行。