Fix Up affordance when restoring Settings app state

- save the state of the Up affordance and restore it

Change-Id: Ia00e929b1bbcdaa51280f9b2bb9322f8594c5a37
This commit is contained in:
Fabrice Di Meglio
2014-04-03 18:40:38 -07:00
parent ef724a0f95
commit b731dd0554

View File

@@ -126,6 +126,7 @@ public class SettingsActivity extends Activity
private static final String SAVE_KEY_HEADERS = ":settings:headers"; private static final String SAVE_KEY_HEADERS = ":settings:headers";
private static final String SAVE_KEY_SEARCH_MENU_EXPANDED = ":settings:search_menu_expanded"; private static final String SAVE_KEY_SEARCH_MENU_EXPANDED = ":settings:search_menu_expanded";
private static final String SAVE_KEY_SEARCH_QUERY = ":settings:search_query"; private static final String SAVE_KEY_SEARCH_QUERY = ":settings:search_query";
private static final String SAVE_KEY_SHOW_HOME_AS_UP = ":settings:show_home_as_up";
/** /**
* When starting this activity, the invoking Intent can contain this extra * When starting this activity, the invoking Intent can contain this extra
@@ -300,6 +301,7 @@ public class SettingsActivity extends Activity
private Button mNextButton; private Button mNextButton;
private ActionBar mActionBar; private ActionBar mActionBar;
private boolean mDisplayHomeAsUpEnabled;
private SearchView mSearchView; private SearchView mSearchView;
private MenuItem mSearchMenuItem; private MenuItem mSearchMenuItem;
@@ -425,7 +427,7 @@ public class SettingsActivity extends Activity
getFragmentManager().addOnBackStackChangedListener(this); getFragmentManager().addOnBackStackChangedListener(this);
boolean displayHomeAsUpEnabled = true; mDisplayHomeAsUpEnabled = true;
String initialFragmentName = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT); String initialFragmentName = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);
Bundle initialArguments = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); Bundle initialArguments = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
@@ -443,6 +445,8 @@ public class SettingsActivity extends Activity
mHeaders.addAll(headers); mHeaders.addAll(headers);
setTitleFromBackStack(); setTitleFromBackStack();
} }
mDisplayHomeAsUpEnabled = savedState.getBoolean(SAVE_KEY_SHOW_HOME_AS_UP);
} else { } else {
// We need to build the Headers in all cases // We need to build the Headers in all cases
onBuildHeaders(mHeaders); onBuildHeaders(mHeaders);
@@ -451,7 +455,7 @@ public class SettingsActivity extends Activity
final ComponentName cn = getIntent().getComponent(); final ComponentName cn = getIntent().getComponent();
// No UP is we are launched thru a Settings shortcut // No UP is we are launched thru a Settings shortcut
if (!cn.getClassName().equals(SubSettings.class.getName())) { if (!cn.getClassName().equals(SubSettings.class.getName())) {
displayHomeAsUpEnabled = false; mDisplayHomeAsUpEnabled = false;
} }
final String initialTitle = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT_TITLE); final String initialTitle = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT_TITLE);
mInitialTitle = (initialTitle != null) ? initialTitle : getTitle(); mInitialTitle = (initialTitle != null) ? initialTitle : getTitle();
@@ -460,7 +464,7 @@ public class SettingsActivity extends Activity
mInitialTitle, false); mInitialTitle, false);
} else { } else {
// No UP if we are displaying the Headers // No UP if we are displaying the Headers
displayHomeAsUpEnabled = false; mDisplayHomeAsUpEnabled = false;
if (mHeaders.size() > 0) { if (mHeaders.size() > 0) {
mInitialTitle = getText(R.string.dashboard_title); mInitialTitle = getText(R.string.dashboard_title);
switchToFragment(DashboardSummary.class.getName(), null, false, false, switchToFragment(DashboardSummary.class.getName(), null, false, false,
@@ -471,7 +475,7 @@ public class SettingsActivity extends Activity
mActionBar = getActionBar(); mActionBar = getActionBar();
mActionBar.setHomeButtonEnabled(true); mActionBar.setHomeButtonEnabled(true);
mActionBar.setDisplayHomeAsUpEnabled(displayHomeAsUpEnabled); mActionBar.setDisplayHomeAsUpEnabled(mDisplayHomeAsUpEnabled);
// see if we should show Back/Next buttons // see if we should show Back/Next buttons
Intent intent = getIntent(); Intent intent = getIntent();
@@ -569,6 +573,8 @@ public class SettingsActivity extends Activity
outState.putParcelableArrayList(SAVE_KEY_HEADERS, mHeaders); outState.putParcelableArrayList(SAVE_KEY_HEADERS, mHeaders);
} }
outState.putBoolean(SAVE_KEY_SHOW_HOME_AS_UP, mDisplayHomeAsUpEnabled);
// The option menus are created if the ActionBar is visible and they are also created // The option menus are created if the ActionBar is visible and they are also created
// asynchronously. If you launch Settings with an Intent action like // asynchronously. If you launch Settings with an Intent action like
// android.intent.action.POWER_USAGE_SUMMARY and at the same time your device is locked // android.intent.action.POWER_USAGE_SUMMARY and at the same time your device is locked