Подтвердить что ты не робот

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

Я пытаюсь добавить кнопку возврата в панель действий.

Я хочу, чтобы мое представление выглядело так: enter image description here

Я хочу добавить кнопку "Назад" в левой части панели действий.

Я добавил этот код

ActionBar actionBar = getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

но это не сработает.

Как я могу это исправить?

4b9b3361

Ответ 1

После настройки actionBar.setHomeButtonEnabled(true);

Добавьте следующий код:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; goto parent activity.
            this.finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

Ответ 2

Добавить

actionBar.setHomeButtonEnabled(true);

а затем добавьте следующее

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

Как было предложено naXa, я добавил проверку на itemId, чтобы она работала правильно, если на панели действий есть несколько кнопок.

Ответ 3

этот работал у меня:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_your_activity);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // ... other stuff
}

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

Метод onSupportNavigateUp() вызывается при использовании кнопки "Назад" в SupportActionBar.

Ответ 4

После установки

 actionBar.setHomeButtonEnabled(true);

Вам необходимо настроить родительскую активность в вашем AndroidManifest.xml

<activity
    android:name="com.example.MainActivity"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat" />
<activity
    android:name="com.example.SecondActivity"
    android:theme="@style/Theme.AppCompat" >
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.MainActivity" />
</activity>

За дополнительной информацией обращайтесь http://developer.android.com/training/implementing-navigation/ancestral.html

Ответ 5

Есть два способа приблизиться к этому.

Вариант 1: обновите манифест Android Если параметры Activity всегда вызываются из одного и того же действия, вы можете установить связь в манифесте Android. Android автоматически отобразит кнопку "назад" в ActionBar

<activity
    android:name=".SettingsActivity"
    android:label="Setting Activity">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.example.MainActivity" />
</activity>

Вариант 2. Измените настройку для ActionBar Если вы не знаете, какая активность вызовет действие "Настройки", вы можете создать ее так. Сначала в вашей деятельности, которая расширяет ActionBarActivity (убедитесь, что ваш @imports соответствует уровню совместимости, который вы ищете).

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings_test);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(true);
}

Затем определите кнопку "назад" и нажмите Android, чтобы закрыть текущую открытую активность.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; goto parent activity.
            this.finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

Это должно сделать это!

Ответ 7

Проще и лучше: Для API >= 16

Просто добавьте "parentActivityName" для каждого действия в манифесте. Кнопка "Назад" автоматически переместит u в родительскую активность.

<activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >

Ответ 8

Используйте это, чтобы отобразить кнопку "Назад" и перейти к предыдущей операции,

final ActionBar actionBar = getSupportActionBar();
        assert actionBar != null;
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeAsUpIndicator(R.drawable.back_dark);


@Override
    public boolean onOptionsItemSelected(final MenuItem item) {

        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

Ответ 9

Сначала используйте это:

ActionBar bar = getSupportActionBar();

bar.setDisplayHomeAsUpEnabled(истина);

Затем установите операцию нажатия кнопки в методе onOptionsItemSelected

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

Ответ 10

если кому-то еще нужно решение

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == android.R.id.home) {
        onBackPressed();
    }

    return super.onOptionsItemSelected(item);
}

Ответ 11

Добавьте эту строку в метод onCreate()

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

затем переопределить этот метод

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