После вызова setEnabled (false) кнопку еще можно нажать еще раз - PullRequest
0 голосов
/ 06 июля 2019

При нажатии кнопки я немедленно называю setEnabled ложным, однако это не отключает кнопку, и мне приходится нажимать снова, чтобы отключить.

Я пытался поставить 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);
            }
        });

Он должен функционировать в качестве переключателя, когда один раз может быть выбран только один.

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Я нашел ответ, и у меня есть только догадка, почему он работает.Я переместил весь код для OnCompleteListener в отдельный метод.Я думаю, что слушатель работал до того, как приложение могло зарегистрировать setEnabled(false).Если у кого-то есть какие-либо мысли по этому поводу, я хотел бы услышать.

0 голосов
/ 07 июля 2019

Вам также нужно будет использовать setClickable(false), если вы хотите отменить нажатие кнопки

chooseLeft.setClickable(false);
chooseLeft.setEnabled(false);
chooseRight.setClickable(true);
chooseRight.setEnabled(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...