From e0e4fc208b9d45814f2e56d8b012ecdde5b0dded Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Tue, 5 Oct 2010 11:49:51 -0700 Subject: [PATCH] Remove singleTop, as it's causing serious problems on the phone. And... Fix fragment launching from another app - pass along the fragment class name and bundle from the original intent. Bug: 3064432 Bug: 3059311 (partial fix) --- AndroidManifest.xml | 2 +- src/com/android/settings/Settings.java | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 90c1355d2f2..29b5469334c 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -52,7 +52,7 @@ android:label="@string/settings_label_launcher" android:taskAffinity="com.android.settings" android:theme="@android:style/Theme.Holo" - android:launchMode="singleTop"> + > diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 1f57f6c4e5c..6cc641ed8e6 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -16,9 +16,7 @@ package com.android.settings; -import android.app.Fragment; import android.content.Intent; -import android.os.Bundle; import android.preference.PreferenceActivity; import java.util.List; @@ -30,6 +28,18 @@ public class Settings extends PreferenceActivity { // TODO: Update Call Settings based on airplane mode state. + @Override + public Intent getIntent() { + String startingFragment = getStartingFragmentClass(super.getIntent()); + if (startingFragment != null && !onIsMultiPane()) { + Intent modIntent = new Intent(super.getIntent()); + modIntent.putExtra(EXTRA_SHOW_FRAGMENT, startingFragment); + modIntent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, super.getIntent().getExtras()); + return modIntent; + } + return super.getIntent(); + } + /** * Checks if the component name in the intent is different from the Settings class and * returns the class name to load as a fragment. @@ -51,6 +61,7 @@ public class Settings extends PreferenceActivity { if (fragmentClass != null) { Header header = new Header(); header.fragment = fragmentClass; + header.fragmentArguments = getIntent().getExtras(); return header; } return super.onGetInitialHeader();