Прежде чем я начну, хочу отметить, что просмотрел другие вопросы, включая this one. Сейчас я не могу заставить работать.Обновление виджета после изменения настроек
Я пытаюсь настроить параметры моего виджета; в этом случае у меня есть флажок, чтобы показывать либо процент, либо нет. В моем классе WidgetConfig у меня настроен флажок, и я пытаюсь использовать метод onBackPressed для обновления виджета.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.new_widget_config);
final CheckBoxPreference checkBoxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref");
checkBoxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
SharedPreferences myPreferences = context.getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor prefEditor = myPreferences.edit();
if (newValue.toString().equals("true"))
{
prefEditor.putBoolean("checkboxPref", true);
prefEditor.commit();
}
else
{
prefEditor.putBoolean("checkboxPref", false);
prefEditor.commit();
}
return true;
}
});
}
@Override
public void onBackPressed() {
Intent intent=getIntent();
Bundle extras=intent.getExtras();
int widgetId=extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
// this is the intent broadcast/returned to the widget
Intent updateIntent = new Intent(this, BatteryInfoData.class);
updateIntent.setAction("PreferencesUpdated");
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
sendBroadcast(updateIntent);
}
Когда я пытаюсь поставить следующий код в мой OnReceive метод, я получаю ошибки, что действие не могут быть решены переменной. Правильно ли я это делаю?
@Override
public void onReceive(Context context, Intent intent) {
if ("PreferencesUpdated".equals(action)) {
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget);
int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
updateWidgetView(context, remoteView, appWidgetId);
}
}
Кому-нибудь, кто ищет, как обновить одно предпочтение, когда другие изменения, также см. Http://stackoverflow.com/questions/7603633/updating-preferences-in-real-time. – ToolmakerSteve