0

我有一个值存储在 sharedpreferences 中。我想取这个值并将其显示在我的小部件中的文本视图中。在我的 onCreate 我有切换状态,其中 tgpref 是值。

这是我的 MainActivity 而不是 Widget 提供程序活动中引用的代码的一部分。

ToggleButton togglebutton = (ToggleButton) findViewById(R.id.toggleButton1);
findViewById(R.id.risparmiostate);
preferences = getPreferences(MODE_PRIVATE);


boolean tgpref = preferences.getBoolean("tgpref", false);  //default is false
if (tgpref == true) {
 togglebutton.setChecked(true);
}
else
{
togglebutton.setChecked(false);
}

然后当我写我想要切换的东西时,我保存了这个值

SharedPreferences.Editor editor = preferences.edit();
           editor.putBoolean("tgpref", true); //value to save
           editor.commit();"

我怎样才能在我的小部件中获取这个值和端口?我想写类似的东西

if (tgpref == true) {
     TextView textView = (TextView)findViewById(R.id.risparmiostate);
     textView.setText("Risparmio on");

    } else {
     TextView textView = (TextView)findViewById(R.id.risparmiostate);
 textView.setText("Risparmio off");

}

但我不能在小部件中使用findViewById。我能怎么做?

4

1 回答 1

2

在您的 Widget Provider 类中(扩展AppWidgetProvider并设置您的小部件的类)

像这样检索RemoteViews的实例;

RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                    R.layout.widget_layout);

然后使用RemoteView类中的方法设置任何视图,例如设置文本视图使用此方法;

remoteViews.setTextViewText(R.id.text_view_id, "Some text to add to the view");

希望您已经知道如何从上面的代码中访问您的首选项。

编辑:我忘记提到的一件事是将此代码放在 AppWidgetProvider 类的 onUpdate() 方法中。

于 2013-08-23T09:17:04.977 回答