Fix Drawer selection when using BACK
- select the initial Header if needed Change-Id: I2d884fbab9a49cc3385dbe1b311f9e0853d027d3
This commit is contained in:
@@ -615,7 +615,7 @@ public class SettingsActivity extends Activity
|
|||||||
mInitialTitle = (initialTitleResId > 0) ? getText(initialTitleResId) : getTitle();
|
mInitialTitle = (initialTitleResId > 0) ? getText(initialTitleResId) : getTitle();
|
||||||
setTitle(mInitialTitle);
|
setTitle(mInitialTitle);
|
||||||
switchToHeaderInner(initialFragment, initialArguments, true, false, mInitialTitle);
|
switchToHeaderInner(initialFragment, initialArguments, true, false, mInitialTitle);
|
||||||
setSelectedHeaderByTopLevelId(mTopLevelHeaderId);
|
setSelectedHeaderById(mTopLevelHeaderId);
|
||||||
mInitialHeader = mCurrentHeader;
|
mInitialHeader = mCurrentHeader;
|
||||||
} else {
|
} else {
|
||||||
// If there are headers, then at this point we need to show
|
// If there are headers, then at this point we need to show
|
||||||
@@ -720,6 +720,7 @@ public class SettingsActivity extends Activity
|
|||||||
final int count = getFragmentManager().getBackStackEntryCount();
|
final int count = getFragmentManager().getBackStackEntryCount();
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
setTitle(mInitialTitle);
|
setTitle(mInitialTitle);
|
||||||
|
setSelectedHeaderById(mInitialHeader.id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FragmentManager.BackStackEntry bse = getFragmentManager().getBackStackEntryAt(count - 1);
|
FragmentManager.BackStackEntry bse = getFragmentManager().getBackStackEntryAt(count - 1);
|
||||||
@@ -819,17 +820,20 @@ public class SettingsActivity extends Activity
|
|||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setSelectedHeaderByTopLevelId(int topLevelId) {
|
private void setSelectedHeaderById(long headerId) {
|
||||||
final int count = mHeaders.size();
|
final int count = mHeaders.size();
|
||||||
for (int n = 0; n < count; n++) {
|
for (int n = 0; n < count; n++) {
|
||||||
Header h = mHeaders.get(n);
|
Header h = mHeaders.get(n);
|
||||||
if (h.id == topLevelId) {
|
if (h.id == headerId) {
|
||||||
setSelectedHeader(h);
|
setSelectedHeader(h);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* As the Headers can be rebuilt, their references can change, so use this method with caution!
|
||||||
|
*/
|
||||||
private void setSelectedHeader(Header header) {
|
private void setSelectedHeader(Header header) {
|
||||||
if (header == null) {
|
if (header == null) {
|
||||||
mCurrentHeader = null;
|
mCurrentHeader = null;
|
||||||
@@ -849,6 +853,18 @@ public class SettingsActivity extends Activity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void highlightHeader(int id) {
|
||||||
|
if (id != 0) {
|
||||||
|
Integer index = mHeaderIndexMap.get(id);
|
||||||
|
if (index != null) {
|
||||||
|
mDrawer.setItemChecked(index, true);
|
||||||
|
if (mDrawer.getVisibility() == View.VISIBLE) {
|
||||||
|
mDrawer.smoothScrollToPosition(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When in two-pane mode, switch to the fragment pane to show the given
|
* When in two-pane mode, switch to the fragment pane to show the given
|
||||||
* preference fragment.
|
* preference fragment.
|
||||||
@@ -950,18 +966,6 @@ public class SettingsActivity extends Activity
|
|||||||
return getIntent().getBooleanExtra(EXTRA_NO_HEADERS, false);
|
return getIntent().getBooleanExtra(EXTRA_NO_HEADERS, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void highlightHeader(int id) {
|
|
||||||
if (id != 0) {
|
|
||||||
Integer index = mHeaderIndexMap.get(id);
|
|
||||||
if (index != null && mDrawer != null) {
|
|
||||||
mDrawer.setItemChecked(index, true);
|
|
||||||
if (mDrawer.getVisibility() == View.VISIBLE) {
|
|
||||||
mDrawer.smoothScrollToPosition(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Intent getIntent() {
|
public Intent getIntent() {
|
||||||
Intent superIntent = super.getIntent();
|
Intent superIntent = super.getIntent();
|
||||||
|
Reference in New Issue
Block a user