Вот мой запрос, я хочу настроить кнопку «Назад назад» в панели действий, не нажав кнопку «Назад»? Я переопределяю метод onBackPressed (), который работает с моей кнопкой возврата эмулятора, а не
С кнопкой возврата панели действий.
Я хочу, чтобы это произошло с панелью действий? Как я могу это сделать? Вот мой код
@Override public void onBackPressed() { Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); return; }
Я использовал этот тост независимо от того, работает ли он обратно или нет, но фактическое изменение реализации похоже на возврат к предыдущей активности. Но это не работает с кнопкой, присутствующей на панели «Луч» (кроме названия).
Пожалуйста, любой может указать мне проблему.
Я думаю, вы хотите переопределить операцию нажатия кнопки «домой». Вы можете переопределить эту функцию в своей деятельности.
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); break; } return true; }
Если вы хотите, чтобы кнопка возврата ActionBar вела себя так же, как кнопка «Назад»:
@Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return false; }
Две вещи, которые следует иметь в виду: пользователь может нажать кнопку «Назад» или нажать кнопку входа в панель действий.
Итак, если вы хотите перенаправить его в тот же пункт назначения, вы можете это сделать.
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return false; } @Override public void onBackPressed() { super.onBackPressed(); Intent intent = new Intent(CurrentActivity.this, NextActivity.class); startActivity(intent); finish(); }
Это приведет к тому, что пользователь намеревается нажать клавишу или кнопку панели действий.
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; } return true; }
Если вы хотите вернуться к предыдущему экземпляру Activity , нажав кнопку ActionBar home, не обновляя его, вы можете переопределить метод getParentActivityIntent для использования одного из предыдущего стека:
@TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public Intent getParentActivityIntent() { return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); }
РЕДАКТИРОВАТЬ:
Также вы можете добиться того же результата
Установив startMode вашей родительской активности на singleTop.
Поэтому установите android:launchMode="singleTop"
в родительскую активность в манифесте.
Или вы можете использовать флаг FLAG_ACTIVITY_CLEAR_TOP с намерением UP.
Ссылка: обеспечение навигации