OSDN Git Service

Fix a bug in navup button.
authorFan Zhang <zhfan@google.com>
Fri, 14 Oct 2016 22:37:19 +0000 (15:37 -0700)
committerFan Zhang <zhfan@google.com>
Fri, 14 Oct 2016 22:42:28 +0000 (15:42 -0700)
When launching internal setting activity from dynamic tiles and hit back
button, it goes back to settings homepage. Instead it should just go
back to the UI where startActivity is called.

This is caused by various activity flags set in manifest. Instead of
using startActivity, internal settings screen will just be launched
using SubSetting, which doesn't have this problem.

For external settings, still use startActivityForResult to maintain
backstack.

Test: manual
Change-Id: I07aa6ed932b9048375629d6ffd6ad1adfaba3fd3

src/com/android/settings/dashboard/DashboardFragment.java

index a72717d..a5876ce 100644 (file)
@@ -234,10 +234,15 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
             if (tile.icon != null) {
                 pref.setIcon(tile.icon.loadDrawable(context));
             }
-            if (tile.intent != null) {
+            final Bundle metadata = tile.metaData;
+            if (metadata != null) {
+                String clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
+                if (!TextUtils.isEmpty(clsName)) {
+                    pref.setFragment(clsName);
+                }
+            } else if (tile.intent != null) {
                 final Intent intent = new Intent(tile.intent);
                 pref.setOnPreferenceClickListener(preference -> {
-                    intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, true);
                     getActivity().startActivityForResult(intent, 0);
                     return true;
                 });