首页 > 解决方案 > 如果语句只检查一次

问题描述

我希望我btnsave只有在有东西的时候才能工作editText。首先,当应用程序启动时,当editText我的代码中没有任何东西工作时(btnsave不起作用)。但是当我输入一些东西时,editText我希望btnsave能够工作。但不是!它不起作用。我认为 if 语句只运行一次。

问题是什么?我希望此代码在应用程序运行时永久运行。

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它不会重新检查条件。为什么?

标签: javaandroidif-statementbuttonandroid-edittext

解决方案


您应该遵循以下逻辑:

  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);

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


推荐阅读