【问题标题】:Android : Shared Preferences unable to Store Value in Shared PreferencesAndroid:共享首选项无法在共享首选项中存储值
【发布时间】: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


    【解决方案1】:

    使用settings = PreferenceManager.getDefaultSharedPreferences(context);

    此方法适用于所有服务、活动、小部件等。

    【讨论】:

    • 因为您的变体即取决于使用首选项的类
    • 我的意思是,如果你想分享所有应用的设置,请使用我写的
    猜你喜欢
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2016-09-13
    • 2011-09-03
    相关资源
    最近更新 更多