как переопределить кнопку панели действий в андроиде?

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

Я достиг этого, просто используя два шага,

Шаг 1. Перейдите в AndroidManifest.xml и добавьте параметр в тег – android: parentActivityName = “. Home.HomeActivity”

пример :

   

Шаг 2: в ActivityDetail добавьте действие для предыдущей страницы / активности

пример :

  @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); } 

Извините, мой последний ответ, но для тех, кто еще попал на эту страницу с тем же вопросом, я пробовал следующее:

 @Override public boolean onOptionsItemSelected(MenuItem item) { ... if (item.getItemId() == android.R.id.home) { .... } .... } 

но это не удалось поймать кнопку «Назад».

В конце концов я нашел метод, который работал для меня на https://stackoverflow.com/a/37185334/3697478, который должен переопределить «onSupportNavigateUp ()», поскольку я использую панель действий из библиотеки поддержки «AppCompatActivity». (Существует эквивалент «onNavigateUp ()» для новой панели инструментов / панели инструментов.)

 @Override public boolean onSupportNavigateUp(){ finish(); return true; } 

и я удалил раздел “android: parentActivityName =”. MainActivity “из файла манифеста.

 @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); return true; } //noinspection SimplifiableIfStatement if (id == R.id.signIn) { return true; } return super.onOptionsItemSelected(item); } /////////////////// @Override public void onBackPressed() { super.onBackPressed(); finish(); } 

Существует несколько способов настройки кнопки возврата в панели:

1) метод .setDisplayHomeAsUpEnabled(true); будет делать это, а затем вы можете просто переопределить android.R.id.home

2) добавление в Android Manifest, но в этом случае вы не можете переопределить android.R.id.home в OnOptionsMenuSelected.

.. для тех, кто задается вопросом, почему это не работает для них …

  • Проблемы с импортом проекта в Android Studio в отношении ActionBarSherlock
  • Проблемы с альфа-тестированием OpenGL ES2
  • Как программно заблокировать экран в Android?
  • Как работает Activity.finish () в Android?
  • eclipse с Android sdk, ERROR: пространство кучи Java
  • Android 3.1 USB-хост - BroadcastReceiver не получает USB_DEVICE_ATTACHED
  • Java Object.hashCode () - адрес или случайный ()?
  • Android: как обращаться с кнопкой
  • NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
  • Не удалось выполнить com.google.android.gms play-services-auth: 11.4.0
  • Как работает BreakIterator в Android?
  • Давайте будем гением компьютера.