From 9cf5cfb03dbf99e0d3cee1ac35b852822569f2ce Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Fri, 14 Oct 2016 15:37:19 -0700 Subject: [PATCH] Fix a bug in navup button. 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 | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index a72717d3ae..a5876ce696 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -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; }); -- 2.11.0