summaryrefslogtreecommitdiffstats
path: root/core/java/android/preference
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-11-15 17:58:52 -0800
committerDianne Hackborn <hackbod@google.com>2010-11-16 10:50:31 -0800
commit3a57fb9e9c4f205ca6bd4f036b3080f92588d16d (patch)
tree5a494ae594e92171aa0d8b5ad00ce205f3afe4bf /core/java/android/preference
parent248caac22ef7be6c2357512a1ab7d4a9218f12a8 (diff)
downloadframeworks_base-3a57fb9e9c4f205ca6bd4f036b3080f92588d16d.zip
frameworks_base-3a57fb9e9c4f205ca6bd4f036b3080f92588d16d.tar.gz
frameworks_base-3a57fb9e9c4f205ca6bd4f036b3080f92588d16d.tar.bz2
Fix issue #3191573: PreferenceFragment.onActivityResult cannot
launch a new fragment on the same call. There were some problems with the API design where you could do things in such a way that a back stack entry that was not at the top would get popped. Ouch. Hopefully this change prevents that from being able to happen. Change-Id: I8cbc952e12ddd231ff6c84b6e9bbf5125f449f04
Diffstat (limited to 'core/java/android/preference')
-rw-r--r--core/java/android/preference/PreferenceActivity.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/core/java/android/preference/PreferenceActivity.java b/core/java/android/preference/PreferenceActivity.java
index 0ce69ad..39f3cee 100644
--- a/core/java/android/preference/PreferenceActivity.java
+++ b/core/java/android/preference/PreferenceActivity.java
@@ -23,6 +23,7 @@ import org.xmlpull.v1.XmlPullParserException;
import android.app.Fragment;
import android.app.FragmentBreadCrumbs;
+import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ListActivity;
import android.content.Context;
@@ -902,7 +903,8 @@ public abstract class PreferenceActivity extends ListActivity implements
}
private void switchToHeaderInner(String fragmentName, Bundle args, int direction) {
- getFragmentManager().popBackStack(BACK_STACK_PREFS, POP_BACK_STACK_INCLUSIVE);
+ getFragmentManager().popBackStack(BACK_STACK_PREFS,
+ FragmentManager.POP_BACK_STACK_INCLUSIVE);
Fragment f = Fragment.instantiate(this, fragmentName, args);
FragmentTransaction transaction = getFragmentManager().openTransaction();
transaction.setTransition(direction == 0 ? FragmentTransaction.TRANSIT_NONE
@@ -934,7 +936,8 @@ public abstract class PreferenceActivity extends ListActivity implements
if (mCurHeader == header) {
// This is the header we are currently displaying. Just make sure
// to pop the stack up to its root state.
- getFragmentManager().popBackStack(BACK_STACK_PREFS, POP_BACK_STACK_INCLUSIVE);
+ getFragmentManager().popBackStack(BACK_STACK_PREFS,
+ FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else {
int direction = mHeaders.indexOf(header) - mHeaders.indexOf(mCurHeader);
switchToHeaderInner(header.fragment, header.fragmentArguments, direction);
@@ -1061,14 +1064,14 @@ public abstract class PreferenceActivity extends ListActivity implements
setResult(resultCode, resultData);
finish();
} else {
+ // XXX be smarter about popping the stack.
+ onBackPressed();
if (caller != null) {
if (caller.getTargetFragment() != null) {
caller.getTargetFragment().onActivityResult(caller.getTargetRequestCode(),
resultCode, resultData);
}
}
- // XXX be smarter about popping the stack.
- onBackPressed();
}
}