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

Использование панели действий в качестве кнопки "вверх", функция "home" saveInstanceState всегда равна нулю

Действие A === кнопка щелчка === > Активность B

При нажатии кнопки возврата активность А не воссоздается.

При нажатии кнопки "вверх" в качестве кнопки "вверх" активна операция "А".

Итак, я сохраняю состояние, когда A.onSaveInstanceState(Bundle outState) , и использовать состояние, когда A.onRestoreInstanceState(Bundle savedInstanceState).

Сохранение и использование отлично работают (кроме кнопки "Домой как вверх" )

.

Однако

При нажатии кнопки вверх, система воссоздает активность A, а savedInstanceState не работает.

Как я могу использовать состояние сохраненного экземпляра?

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
        // I do not want this... 
        // Home as up button is to navigate to Home-Activity not previous acitivity
            super.onBackPressed();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
4b9b3361

Ответ 1

В onCreate() включить домашнюю кнопку.

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
}

В методе onOptionItemSelected() сделайте это.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

Это должно включить навигацию вверх. Если вы хотите, чтобы родительская активность была восстановлена ​​с помощью файла savedInstanceState. Вы должны установить launchMode="singleTop" в родительской активности в файле манифеста.

Для получения дополнительной информации http://developer.android.com/: Предоставление навигации вверх

Ответ 2

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar Up/Home button
    case android.R.id.home:
        finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

Я использовал финал(), внедренный NavUtils;