@arteqrt
Почти не начинающий програмист

Как дезактивировать кнопку?

Здравствуйте, столкнулся с вот такой проблемой.

У меня есть три кнопки, на каждой у меня стоит обработчик касания dawn и up, после отпускания пальца с кнопки к меня засыпает поток, потом должна запуститься функция, которая их обновляет. В это время, если нажать, по кнопке, и снова отпустить, то поток опять засыпает, то есть получается бесконечный сон потока.
switch (view.getId()) {
                case R.id.answer1:
                    if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                        int trueNum = 0;
                        for (int i = 0; i < 15; i++) {
                            if (text1.equals(questions.getTrueList(i))) {
                                answer1.setBackgroundDrawable(getDrawable(R.drawable.button_levels_true));
                                trueNum = 1;
                            }
                        }
                        if (trueNum == 0) answer1.setBackgroundDrawable(getDrawable(R.drawable.button_levels_false));
                    }
                    if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                        try {
                            Thread.sleep(600);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        changeQuestion();
                    }
                    break;

                case R.id.answer2:
                    if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                        int trueNum = 0;
                        for (int i = 0; i < 15; i++) {
                            if (text2.equals(questions.getTrueList(i))) {
                                answer2.setBackgroundDrawable(getDrawable(R.drawable.button_levels_true));
                                trueNum = 1;
                            }
                        }
                        if (trueNum == 0) answer2.setBackgroundDrawable(getDrawable(R.drawable.button_levels_false));
                    }
                    if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                        try {
                            Thread.sleep(600);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        changeQuestion();
                    }
                    break;

                case R.id.answer3:
                    if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                        int trueNum = 0;
                        for (int i = 0; i < 15; i++) {
                            if (text3.equals(questions.getTrueList(i))) {
                                answer3.setBackgroundDrawable(getDrawable(R.drawable.button_levels_true));
                                trueNum = 1;
                            }
                        }
                        if (trueNum == 0) answer3.setBackgroundDrawable(getDrawable(R.drawable.button_levels_false));
                    }
                    if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                        try {
                            Thread.sleep(600);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                        changeQuestion();
                    }
                    break;
            }

            return true;
        }
    };


public void changeQuestion() {
        answer1.setBackgroundDrawable(getDrawable(R.drawable.button_levels));
        answer2.setBackgroundDrawable(getDrawable(R.drawable.button_levels));
        answer3.setBackgroundDrawable(getDrawable(R.drawable.button_levels));

        questionText.setText(questions.getQuestion());

        text1 = questions.getAnswer1();
        text2 = questions.getAnswer2();
        text3 = questions.getAnswer3();

        answer1.setText(text1);
        answer2.setText(text2);
        answer3.setText(text3);
    }

Мне нужно найти метод, при котором можно отключить свойства у кнопки или отключить у нее обработчик up. Сколько гуглил, то нашел только setEnabled(false) и все.
Я в этом деле новичок, если что)
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
@402d
начинал с бейсика на УКНЦ в 1988
Thread.sleep(600); - на UI потоке нельзя.

возьми за основу пример single click
https://stackoverflow.com/questions/5608720/androi...

А лучше это сделать через timerTask
developer.alexanderklimov.ru/android/java/timer.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы