【发布时间】:2016-10-31 17:54:41
【问题描述】:
我目前在一个项目中工作,我必须根据按下的小部件更新共享首选项,如果用户按下小部件,共享首选项将存储“关闭”,否则存储“打开”。
另一方面,共享首选项的相同代码将它们的值存储在活动和服务中,但不适用于小部件
以下是我的代码片段:
Widget.class
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
super.onReceive(context, intent);
Toast.makeText(context,"Clicked",Toast.LENGTH_SHORT).show();
if (SYNC_CLICKED.equals(intent.getAction())) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews;
ComponentName watchWidget;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main3);
watchWidget = new ComponentName(context, Main3Activity.class);
SharedPreferences prefs = context.getSharedPreferences("Settings", 0);
//battey_stats =mpref.getString("on_off", "15");
Toast.makeText(context,app,Toast.LENGTH_SHORT).show();
if(app.equals("OFF"))
{
app="ON";
SharedPreferences set =context. getSharedPreferences("Settings", 0); // 0 - for private mode
SharedPreferences.Editor editor = set.edit();
editor.putString("on_off", "OFF");
editor.commit();
remoteViews.setImageViewResource(R.id.button, R.drawable.unchecked_box);
}
else
{
Toast.makeText(context,"ONN",Toast.LENGTH_SHORT).show();
app="OFF";
SharedPreferences set =context. getSharedPreferences("Settings", 0); // 0 - for private mode
SharedPreferences.Editor editor = set.edit();
editor.putString("on_off", "OFF");
editor.commit();
remoteViews.setImageViewResource(R.id.button, R.drawable.icon);
}
// remoteViews.setTextViewText(R.id.button, "TESTING");
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
}
当我点击小部件时,图像正在改变 if 和 else 块可以正常工作,但 共享首选项 没有t 存储值加上 Shared Preferences 的相同代码在 Services 和 中工作活动
【问题讨论】:
标签: android sharedpreferences android-sharedpreferences