我在 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);
以便初始化类成员按钮