java - 调用setEnabled(false)后按钮仍然可以再按一次

标签 java android firebase google-cloud-firestore buttonclick

单击按钮时,我立即将 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);

关于java - 调用setEnabled(false)后按钮仍然可以再按一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56917350/

相关文章:

java - Netbeans创建的Jar不起作用,但IDE内部程序可以工作

android - SQLite Android选择排除某些列的随机行

java - setValue 数据到前台服务中的 Firebase RealTimeDatabase 不写入数据

javascript - 如何将来自不同组件的 firebase auth 和 Cloud Firestore 作为单个 firebase 应用程序使用

android - 如何使用firebase android查询多个节点中的特定子值

java - 客户端 - 服务器 ObjectInputStream 错误

java - Struts2 提交按钮方法调用不会触发

java - 为什么Map记录output = 0,即使我在mapper中给出输出

java - 删除应用程序时是否删除与应用程序关联的共享首选项?

java - 如何在 Android 中水平滚动 ImageView?