Show back button for non-toplevel settings in new IA.
Bug: 32159368
Test: RunSettingsRoboTests
Change-Id: I627a6e456ece8ecb1fc337fcd4dd1e9598dab554
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 08eb247..7e013e4 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -16,11 +16,11 @@
package com.android.settings;
+import android.app.ActionBar;
import android.app.ActivityManager;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
-import android.app.ActionBar;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -166,7 +166,6 @@
private static final String SAVE_KEY_SEARCH_QUERY = ":settings:search_query";
private static final String SAVE_KEY_SHOW_HOME_AS_UP = ":settings:show_home_as_up";
private static final String SAVE_KEY_SHOW_SEARCH = ":settings:show_search";
- private static final String SAVE_KEY_HOME_ACTIVITIES_COUNT = ":settings:home_activities_count";
/**
* When starting this activity, the invoking Intent can contain this extra
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 2872a78..13c2cc3 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -17,6 +17,7 @@
import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
@@ -25,6 +26,7 @@
import android.util.ArraySet;
import android.util.Log;
+import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.core.PreferenceController;
import com.android.settings.overlay.FeatureFactory;
@@ -232,8 +234,13 @@
if (tile.icon != null) {
pref.setIcon(tile.icon.loadDrawable(context));
}
- if (tile.intent != null) {
- pref.setIntent(tile.intent);
+ final Intent intent = new Intent(tile.intent);
+ if (intent != null) {
+ pref.setOnPreferenceClickListener(preference -> {
+ intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, true);
+ getActivity().startActivityForResult(intent, 0);
+ return true;
+ });
}
// Use negated priority for order, because tile priority is based on intent-filter
// (larger value has higher priority). However pref order defines smaller value has