Der Schlüssel zu dem Problem ist irgendwie die von PreferenceActivity als Referenz gespeicherte Einstellung zu verwenden und Ihre eigene Einstellung zu erstellen. Im Folgenden habe ich versucht, mehrere Einstellungen für mehrere Instanzen von App-Widgets mit einer einzigen PreferenceActivity vorzunehmen.
private void onExitPreferenceActivity(Context context, int appWidgetId) {
// Load the user selected settings saved by PreferenceActivity
final String SETTING_PREFIX = "COLOR";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
final String colorSetting = prefs.getString(SETTING_PREFIX, "");
// Save the setting of the current widget with widget ID as the postfix
final SharedPreferences.Editor prefEditor = prefs.edit();
prefEditor.putString(SETTING_PREFIX + String.valueOf(appWidgetId), colorSetting);
prefEditor.commit();
}
private void onLoadingWidgetSetting(Context context, int appWidgetId) {
// Load the setting of a particular widget given a widget ID
final String SETTING_PREFIX = "COLOR";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
final String colorSetting = prefs.getString(SETTING_PREFIX + String.valueOf(appWidgetId), "");
// Use the loaded setting
// ....
}