如何使用文本转换器使我的按钮可见



我在 xml 中使按钮不可见,我想在我的 EditText 中生成某个字符串值时使按钮再次可见。我已经使用TextWatcher检查何时使用if语句满足该值。但是,当执行显示按钮的代码时,应用程序崩溃,指出文本观察器停止工作。我对安卓开发很陌生,所以可能是我搞砸了。

这是我的代码:

public class MainActivity extends AppCompatActivity
{
    private EditText UserInput;
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button)findViewById(R.id.button);
        UserInput = (EditText) findViewById(R.id.UserInput);
        UserInput.addTextChangedListener(watch);
    }
    TextWatcher watch = new TextWatcher()
    {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(s.toString().equals("teststring") ){
                //program crashes when it reaches this part
                button.setVisibility(View.VISIBLE);
            }
            else 
            {
            }
        }
        @Override
        public void afterTextChanged(Editable s) {
        }
    };      
}

您已经在此处将Button定义为全局变量:

private Button button;

但是,当您在方法中定义视图onCreate您定义一个局部变量Button并实例化它时,如下所示:

Button button = (Button)findViewById(R.id.button);

稍后,当您在 Button 上调用 setVisibility 时,您将在未实例化的全局变量 1 上调用此方法。要解决此问题,只需像这样更改onCreate方法:

button = (Button)findViewById(R.id.button);

因此,全局变量被实例化。

更改此行

Button button = (Button)findViewById(R.id.button);

button = (Button)findViewById(R.id.button);

以便初始化类成员按钮

相关内容

  • 没有找到相关文章

最新更新