From: Fan Zhang Date: Fri, 14 Oct 2016 22:37:19 +0000 (-0700) Subject: Fix a bug in navup button. X-Git-Tag: android-x86-8.1-r1~1487^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9cf5cfb03dbf99e0d3cee1ac35b852822569f2ce;p=android-x86%2Fpackages-apps-Settings.git 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 --- 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; });