调用 setEnabled(false) 按钮后仍然可以再按一次
After calling setEnabled(false) button still can be pressed one more time
单击按钮时,我立即将 setEnabled
调用为 false,但这不会禁用按钮,我必须再次按下才能禁用。
我试过把setEnabled
放在不同的地方,但结果是一样的。
chooseLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseLeft.setEnabled(false);
chooseRight.setEnabled(true);
docRefPosts.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
if(!chooseRight.isEnabled())
docRefPosts.update("votesForRight", FieldValue.increment(-1));
docRefPosts.update("votesForLeft", FieldValue.increment(1));
}
}
});
}
});
chooseRight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chooseRight.setEnabled(false);
docRefPosts.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
if(!chooseLeft.isEnabled())
docRefPosts.update("votesForLeft", FieldValue.increment(-1));
docRefPosts.update("votesForRight", FieldValue.increment(1));
}
}
});
chooseLeft.setEnabled(true);
}
});
它应该用作单选按钮,一次只能选择一个。
如果您希望取消按钮点击,您还需要使用 setClickable(false)
chooseLeft.setClickable(false);
chooseLeft.setEnabled(false);
chooseRight.setClickable(true);
chooseRight.setEnabled(true);
我找到了答案,但我只是猜测它为什么会起作用。我所做的是将 OnCompleteListener
的所有代码移动到一个单独的方法中。我认为在应用程序可以注册 setEnabled(false)
之前,侦听器是 运行。如果有人对这个推理有任何想法,我很想听听。
单击按钮时,我立即将 setEnabled
调用为 false,但这不会禁用按钮,我必须再次按下才能禁用。
我试过把setEnabled
放在不同的地方,但结果是一样的。
chooseLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseLeft.setEnabled(false);
chooseRight.setEnabled(true);
docRefPosts.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
if(!chooseRight.isEnabled())
docRefPosts.update("votesForRight", FieldValue.increment(-1));
docRefPosts.update("votesForLeft", FieldValue.increment(1));
}
}
});
}
});
chooseRight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chooseRight.setEnabled(false);
docRefPosts.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
if(!chooseLeft.isEnabled())
docRefPosts.update("votesForLeft", FieldValue.increment(-1));
docRefPosts.update("votesForRight", FieldValue.increment(1));
}
}
});
chooseLeft.setEnabled(true);
}
});
它应该用作单选按钮,一次只能选择一个。
如果您希望取消按钮点击,您还需要使用 setClickable(false)
chooseLeft.setClickable(false);
chooseLeft.setEnabled(false);
chooseRight.setClickable(true);
chooseRight.setEnabled(true);
我找到了答案,但我只是猜测它为什么会起作用。我所做的是将 OnCompleteListener
的所有代码移动到一个单独的方法中。我认为在应用程序可以注册 setEnabled(false)
之前,侦听器是 运行。如果有人对这个推理有任何想法,我很想听听。