Fix bug #13394626 Settings app crashes on changing orientation to landscape mode
- fix NPE on mInitialHeader.id Change-Id: Ic1017f5a8a20755bf7f36b1f3406d45dcc80ae8f
This commit is contained in:
@@ -133,7 +133,6 @@ public class SettingsActivity extends Activity
|
|||||||
// Constants for state save/restore
|
// Constants for state save/restore
|
||||||
private static final String SAVE_KEY_HEADERS_TAG = ":settings:headers";
|
private static final String SAVE_KEY_HEADERS_TAG = ":settings:headers";
|
||||||
private static final String SAVE_KEY_CURRENT_HEADER_TAG = ":settings:cur_header";
|
private static final String SAVE_KEY_CURRENT_HEADER_TAG = ":settings:cur_header";
|
||||||
private static final String SAVE_KEY_TITLES_TAG = ":settings:titles";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When starting this activity, the invoking Intent can contain this extra
|
* When starting this activity, the invoking Intent can contain this extra
|
||||||
@@ -587,7 +586,6 @@ public class SettingsActivity extends Activity
|
|||||||
// We are restarting from a previous saved state; used that to
|
// We are restarting from a previous saved state; used that to
|
||||||
// initialize, instead of starting fresh.
|
// initialize, instead of starting fresh.
|
||||||
mInitialTitle = getTitle();
|
mInitialTitle = getTitle();
|
||||||
setTitleFromBackStack();
|
|
||||||
|
|
||||||
ArrayList<Header> headers =
|
ArrayList<Header> headers =
|
||||||
savedInstanceState.getParcelableArrayList(SAVE_KEY_HEADERS_TAG);
|
savedInstanceState.getParcelableArrayList(SAVE_KEY_HEADERS_TAG);
|
||||||
@@ -599,6 +597,7 @@ public class SettingsActivity extends Activity
|
|||||||
setSelectedHeader(mHeaders.get(curHeader));
|
setSelectedHeader(mHeaders.get(curHeader));
|
||||||
mInitialHeader = mCurrentHeader;
|
mInitialHeader = mCurrentHeader;
|
||||||
}
|
}
|
||||||
|
setTitleFromBackStack();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
String initialFragment = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);
|
String initialFragment = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);
|
||||||
@@ -713,18 +712,23 @@ public class SettingsActivity extends Activity
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackStackChanged() {
|
public void onBackStackChanged() {
|
||||||
setTitleFromBackStack();
|
if (setTitleFromBackStack() == 0) {
|
||||||
|
setSelectedHeaderById(mInitialHeader.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setTitleFromBackStack() {
|
private int setTitleFromBackStack() {
|
||||||
final int count = getFragmentManager().getBackStackEntryCount();
|
final int count = getFragmentManager().getBackStackEntryCount();
|
||||||
|
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
setTitle(mInitialTitle);
|
setTitle(mInitialTitle);
|
||||||
setSelectedHeaderById(mInitialHeader.id);
|
return 0;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FragmentManager.BackStackEntry bse = getFragmentManager().getBackStackEntryAt(count - 1);
|
FragmentManager.BackStackEntry bse = getFragmentManager().getBackStackEntryAt(count - 1);
|
||||||
setTitleFromBackStackEntry(bse);
|
setTitleFromBackStackEntry(bse);
|
||||||
|
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setTitleFromBackStackEntry(FragmentManager.BackStackEntry bse) {
|
private void setTitleFromBackStackEntry(FragmentManager.BackStackEntry bse) {
|
||||||
|
Reference in New Issue
Block a user