Cleaning up build rules to simplify customizing derivative projects
> Using {packageName} instead of hardcoding com.android.launcher3 in AndroidManifest.xml
for strings which are dependent on packageName
> Adding proguard rule to prevent obfuscating any overridable class
> Making it easier to extend SettingsActivity by overriding the fragment class
Change-Id: I5668c3f33b4cf20ad01d7f54b3d79cc0d268d391
diff --git a/src/com/android/launcher3/SettingsActivity.java b/src/com/android/launcher3/SettingsActivity.java
index 32c198a..8589b7e 100644
--- a/src/com/android/launcher3/SettingsActivity.java
+++ b/src/com/android/launcher3/SettingsActivity.java
@@ -24,6 +24,7 @@
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
+import android.app.Fragment;
import android.app.FragmentManager;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -53,7 +54,8 @@
/**
* Settings activity for Launcher. Currently implements the following setting: Allow rotation
*/
-public class SettingsActivity extends Activity {
+public class SettingsActivity extends Activity
+ implements PreferenceFragment.OnPreferenceStartFragmentCallback {
private static final String ICON_BADGING_PREFERENCE_KEY = "pref_icon_badging";
/** Hidden field Settings.Secure.NOTIFICATION_BADGING */
@@ -71,9 +73,10 @@
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
+ Fragment f = Fragment.instantiate(this, getString(R.string.settings_fragment_name));
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
- .replace(android.R.id.content, getNewFragment())
+ .replace(android.R.id.content, f)
.commit();
}
}
@@ -82,6 +85,22 @@
return new LauncherSettingsFragment();
}
+ @Override
+ public boolean onPreferenceStartFragment(
+ PreferenceFragment preferenceFragment, Preference pref) {
+ Fragment f = Fragment.instantiate(this, pref.getFragment(), pref.getExtras());
+ if (f instanceof DialogFragment) {
+ ((DialogFragment) f).show(getFragmentManager(), pref.getKey());
+ } else {
+ getFragmentManager()
+ .beginTransaction()
+ .replace(android.R.id.content, f)
+ .addToBackStack(pref.getKey())
+ .commit();
+ }
+ return true;
+ }
+
/**
* This fragment shows the launcher preferences.
*/