我的应用程序在复选框处于选中状态时在导航方面起作用,但是,当然,在使用该应用程序时,不会总是选中该复选框,而是考虑其他原因。
无论复选框处于什么状态,我都必须能够使“执行”按钮起作用。
我设法使代码正常工作,但是现在单击按钮时它再次开始关闭,并且单击复选框时不显示图钉框。
这是我的代码:
checkBox = findViewById(R.id.checkBox);
checkBox.setOnClickListener(this);
GoBtn = findViewById(R.id.GoBtn);
GoBtn.setOnClickListener(this);
@Override
public void onClick(View v) {
//method called
if (v == checkBox){
if (checkBox.isChecked())
{
userPin.setVisibility(View.VISIBLE);
//when checkbox is check, userPin becomes visible
}
}
else if (v == GoBtn){
ChangeActivityStudent();
}
{
userPin.setVisibility(View.INVISIBLE);
//otherwise userPin is invisible
}
// called when check box is clicked
GoBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChangeActivityStudent();
}
});
}
private void ChangeActivityStudent(){
Intent intent = new Intent(MainActivity.this, StudentActivity.class);
startActivity(intent);
}
}
您正在另一个onClickListener
内的GoBtn
上设置onClickListener()
。这意味着在您单击复选框之前,不会设置onClickListener
上的GoBtn
。将此替换为onClick()
方法:
@Override
public void onClick(View v) {
if(v == checkBox){
if (checkBox.isChecked())
{
userPin.setVisibility(View.VISIBLE);
//when checkbox is check, userPin becomes visible
}
}else if(v == GoBtn){
ChangeActivityStudent();
}
}
并为onCreate()
中的两个按钮设置监听器。
checkBox.setOnClickListener(this);
GoBtn.setOnClickListener(this);
此外,我不认为您应该在onClickListener
上设置checkBox
,因为它处于选中状态。并且您可能需要获取复选框状态。最佳使用方法是CheckBox.setOnCheckedChangeListener()
。让我知道您是否需要更多帮助。
似乎您的GoBtn.setOnClickListener
位置错误。它不应该在onClick(View v)
方法中。当前,仅在单击复选框后才将逻辑应用于按钮单击。这可能不是导致您的应用崩溃的原因,但是如果不进行更改将无法正常工作。
您需要做的是将GoBtn.setOnClickListener
移动到您呼叫checkBox.setOnClickListener(this);
的位置旁边如果要以编程方式引起点击,请致电GoBtn.performClick()
。