onBackPressed () не работает - PullRequest
1 голос
/ 04 июля 2011

Я пытаюсь закрыть приложение нажатием кнопки «Назад». На главном экране кнопка «Назад» открывает экран кредитов. На этом экране я хочу закрыть приложение кнопкой «Назад». К сожалению, метод 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;
}

}

Ответы [ 5 ]

3 голосов
/ 04 июля 2011

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

   finish();
   startActivity(this, Credits.class);
1 голос
/ 27 августа 2015

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

Snapshot of which directory to delete

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

1 голос
/ 04 июля 2011

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

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
0 голосов
/ 16 августа 2013

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

На вашем месте я бы попробовал:

@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
}
0 голосов
/ 04 июля 2011

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

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

...