Двойной щелчок кнопки возврата

#java #android

#java #Android

Вопрос:

Я новый разработчик Android. Я хочу задать вопрос. Вот что мне нужно: когда пользователь нажимает кнопку возврата, это считается двойным щелчком?


@Override
public void onBackPressed() {
--> what to write here?
return;
}
}

Комментарии:

1. Двойной щелчок — это не обычный для Android способ взаимодействия с пользователем. и этот вопрос слишком расплывчатый — т. Е. Он учитывает двойной щелчок по чему?

Ответ №1:

Вам нужно проверить интервал между нажатиями to и определить, можно ли считать это двойным щелчком или нет:

 private static final long DOUBLE_PRESS_INTERVAL = /* some value in ns. */;
private long lastPressTime;

@Override
public void onBackPressed() {
    long pressTime = System.nanoTime();
    if(pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
        // this is a double click event
    }
    lastPressTime = pressTime;
}
  

Комментарии:

1. хм .. это решение не работает.. возможно, вы не поняли, что я имел в виду.. У меня есть 2 действия, и при первом действии нажимается кнопка поиска.. показывает второе действие со списком строк.. но между ними находится ProgressDialog.. итак, когда вы нажимаете кнопку «Назад» во втором действии, он показывает ProgressDialog, но не первое действие. Чтобы показать первое действие, пользователи должны нажать кнопку «Назад» два раза. Итак, я хотел сделать это, когда пользователь нажимает кнопку «Назад» во втором действии. Один щелчок считается двойным щелчком, и пользователи переходят к первому действию, а не к ProgressDialog.

2. Да, кажется, я неправильно понял ваш вопрос. Диалоговое окно выполнения должно быть частью первого действия, если это действительно диалоговое окно. Просто отклоните его, когда пользователь нажимает кнопку поиска.

Ответ №2:

Вероятно, вам следует включить обоснование необходимости использования этой функциональности в вопрос вместо комментария. Нам намного проще указать вам правильное направление. Есть несколько способов добиться желаемого, но я бы не рекомендовал метод «двойного возврата».

Вместо этого, если вы показываете индикатор выполнения в диалоговом окне или где-либо в процессе поиска, между поиском и вторым действием нет активности. Таким образом, вам не нужно выполнять двойной возврат.

Кроме того, вы могли бы отображать индикатор выполнения во втором действии до тех пор, пока работа не будет выполнена, а затем заменить его фактическим содержимым с помощью другого вызова setContentView(View) . Обратите внимание, что для этого потребуется обработка потоков (в противном случае индикатор выполнения никогда бы не отображался).

Ответ №3:

Кнопка с двойной клавишей

 private static long back_pressed;

@Override
public void onBackPressed()
{
        if (back_pressed   2000 > System.currentTimeMillis()) super.onBackPressed();
        else Toast.makeText(getBaseContext(), "Press once again to exit!", Toast.LENGTH_SHORT).show();
        back_pressed = System.currentTimeMillis();
}