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

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

с кнопкой возврата панели действий.

Я хочу, чтобы это произошло с панелью действий? Как я могу это сделать? Вот мой код

@Override
public void onBackPressed()
{

    Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); 
    return;
}

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

Пожалуйста, любой может указать мне проблему.

Ответ 1

Я думаю, вы хотите переопределить операцию нажатия кнопки home. Вы можете переопределить эту функциональность, как это в своей деятельности.

@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;
}

Ответ 2

Если вы хотите, чтобы кнопка возврата ActionBar вела себя так же, как кнопка "Назад":

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
            if (item.getItemId() == android.R.id.home) {
                    onBackPressed();
                    return true;
            }
            return false;
    }

Ответ 3

Две вещи, чтобы иметь в виду, что пользователь может нажать кнопку "Назад" или нажать кнопку дома на панели действий.
Итак, если вы хотите перенаправить его в тот же пункт назначения, вы можете это сделать.

@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();
}

Это приведет к тому, что пользователь намеревается нажать любую клавишу или кнопку панели действий.

Ответ 4

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

Ответ 5

Если вы хотите вернуться к предыдущему экземпляру Activity, нажав кнопку "Главная страница ActionBar", без повторного создания, вы можете переопределить метод getParentActivityIntent, чтобы использовать тот из задний стек:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public Intent getParentActivityIntent() {
      return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}

EDIT:
Также вы можете добиться того же результата, используя настройка launchMode вашей родительской активности на singleTop.
Поэтому установите android:launchMode="singleTop" на родительскую активность в вашем манифесте.
Или вы можете использовать флаг FLAG_ACTIVITY_CLEAR_TOP с намерением UP.
ссылка: Предоставление навигации

Ответ 6

@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();
}

Ответ 7

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

Шаг 1: перейдите в AndroidManifest.xml и добавьте параметр в тег - android: parentActivityName = ". home.HomeActivity"

пример:

 <activity
    android:name=".home.ActivityDetail"
    android:parentActivityName=".home.HomeActivity"
    android:screenOrientation="portrait" />

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

пример:

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