it-swarm.com.ru

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

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

Я хочу, чтобы мой взгляд выглядел так: enter image description here

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

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

ActionBar actionBar = getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

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

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

60
haythem souissi

После настройки 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);
    }
}
126
Danesh

Добавлять

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, чтобы она работала правильно, если на панели действий есть несколько кнопок.

54
clami219

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

@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.

26
Jason Saruulo

После настройки 

 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

24
BoschAlex

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

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

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

Вариант 2: Изменить настройку панели действий Если вы не знаете, какое действие вызовет действие настройки, вы можете создать его следующим образом. Сначала в вашей деятельности, которая расширяет 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);
    }
}

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

10
Von Iobro

Вам нужно проверить menuItem.getItemId() против Android.R.id.home в методе onOptionsItemSelected

Дубликат Android-кнопка Шерлока ActionBar Up

6
advantej

Используйте это, чтобы показать кнопку назад и перейти к предыдущему действию,

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);
        }
    }
6
Amit Vaghela

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

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

<activity
        Android:name="com.example.myfirstapp.DisplayMessageActivity"
        Android:label="@string/title_activity_display_message"
        Android:parentActivityName="com.example.myfirstapp.MainActivity" >
6
M. Usman Khan

Во-первых, используйте это: 

ActionBar bar = getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);

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

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

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

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

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

    return super.onOptionsItemSelected(item);
}
5
Saad Mahmud

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

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

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

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