onBackPressed () не работает

1

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

package app.jonward.boss;
import android.app.Activity;


public class Credits extends Activity{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.credits);

    //Doing stuff
}


@Override
public void onBackPressed() {
   finish();
   return;
}

}
  • 1
    Вы реализовали onKeyDown () или onKeyUp () случайно? Им не удается вызвать super.onKeyDown / onKeyUp ()? Они возвращают правду? Есть ли в вашем приложении виджеты, которые реализовали onKeyDown () / onKeyUp () и возвращают true для клавиши возврата? Любая из этих вещей может помешать обратной клавише достичь вашего метода onBackPressed ().
  • 0
    ЕДИНСТВЕННАЯ вещь, происходящая в этом коде, рисует некоторые текстовые представления. это оно. но onBackPressed () не выполняется при нажатии кнопки Назад.
Показать ещё 2 комментария
Теги:
button
back

5 ответов

3

Я не понимаю. Что означает onBackPressed(), это вызов finish(). finish() - это метод Activity, поэтому нет возможности "прекратить" ваше приложение, так сказать. Возможно, вы действительно хотите вызвать finish() в Activity, который запускает действие Credits. Внутри другой деятельности:

   finish();
   startActivity(this, Credits.class);
  • 0
    Я не думаю, что вы понимаете, что я пытаюсь сделать. Я хочу использовать кнопку возврата на телефоне, чтобы покинуть экран кредитов (по сути, выход из приложения). Да, я знаю, что приложения для Android на самом деле не закрываются. На данный момент проблема заключается в том, что onBackPressed () не выполняется при нажатии кнопки назад.
  • 0
    Хмммм .... удалите вашу реализацию onBackPressed() . Что происходит потом?
Показать ещё 3 комментария
1

Совсем недавно я столкнулся с этой проблемой, и я смог ее решить, удалив все папки в каталоге build.

Изображение 174551

Я не знаю, как, но казалось, что Android Studio сделал ошибку, генерирующую сборку, и это привело к этой проблеме. Поэтому после удаления каталога build вызывается мой метод onBackpressed().

  • 0
    Странно, но это сработало для меня. Спасибо за ваше открытие. +1
1

Попробуйте следующее решение:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
  • 0
    Я тоже это попробовал и ничего не происходит. У меня нет ошибок, нет предупреждений, ничего, что могло бы сказать мне, что я оставил включение или что-то еще. Просто ничего не происходит. Нужно ли где-нибудь добавить onClickListener?
  • 0
    Это не должно быть нужно. Вы пытались заменить finish() простым лог-сообщением или Toast-сообщением, чтобы увидеть, вызывается ли он вообще, на случай, если есть проблема с finish() ?
Показать ещё 3 комментария
0

Я не знаю, нашли ли вы ответ, но попробовали ли вы super.onBackPressed из вашего основного метода?

Если бы я был вами, я бы попробовал:

@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
}
0

Извините, я еще не могу прокомментировать (я хотел, чтобы это был комментарий к Muffinbubble).

Попробуйте помещать onKeyDown в свой основной класс и проверяйте, вызвано ли это вызовом, даже если вы находитесь в своем втором действии. Затем вы можете проверить, где вы находитесь, через основной класс и выйти из приложения, если это необходимо, а также вернуть super.onKeyDown(..).

  • 0
    Отличное замечание: если сомневаетесь, разбросайте несколько printfs в своем коде (в данном случае Log.d (...).)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню