我目前正在一个项目中工作,我必须根据按下的小部件更新共享首选项,如果用户按下小部件共享首选项将存储“关闭”其他明智的“开启”。
另一方面,共享首选项的相同代码将其值存储在“活动和服务”中,但不使用小部件
以下是我的代码片段:
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 if else block完美运行 但 共享偏好 不会t存储值加上 共享首选项 的相同代码在 服务 和 中工作Activites
答案 0 :(得分:0)
使用person
此方法适用于所有服务,活动,小部件等。