Я пытаюсь закрыть мое приложение нажатием кнопки "Назад" . На главном экране кнопка "Назад" приведет вас к экрану кредитов. На этом экране кредитов я хочу закрыть приложение с помощью кнопки "Назад" . К сожалению, метод 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;
}
}
Я не понимаю. Что означает onBackPressed()
, это вызов finish()
. finish()
- это метод Activity
, поэтому нет возможности "прекратить" ваше приложение, так сказать. Возможно, вы действительно хотите вызвать finish()
в Activity, который запускает действие Credits
. Внутри другой деятельности:
finish();
startActivity(this, Credits.class);
onBackPressed()
. Что происходит потом?
Совсем недавно я столкнулся с этой проблемой, и я смог ее решить, удалив все папки в каталоге build
.
Я не знаю, как, но казалось, что Android Studio
сделал ошибку, генерирующую сборку, и это привело к этой проблеме. Поэтому после удаления каталога build
вызывается мой метод onBackpressed()
.
Попробуйте следующее решение:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
finish()
простым лог-сообщением или Toast-сообщением, чтобы увидеть, вызывается ли он вообще, на случай, если есть проблема с finish()
?
Я не знаю, нашли ли вы ответ, но попробовали ли вы super.onBackPressed из вашего основного метода?
Если бы я был вами, я бы попробовал:
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
Извините, я еще не могу прокомментировать (я хотел, чтобы это был комментарий к Muffinbubble).
Попробуйте помещать onKeyDown в свой основной класс и проверяйте, вызвано ли это вызовом, даже если вы находитесь в своем втором действии. Затем вы можете проверить, где вы находитесь, через основной класс и выйти из приложения, если это необходимо, а также вернуть super.onKeyDown(..).