Android获取widget内的textView值

问题描述 投票:0回答:2

有没有办法从小部件内的textView项获取值?我的小部件布局中有 2 个 textView,在小部件更新时我想为其中之一设置新值,并且不想更改第二个的值。现在当我像这样设置值时

   remoteViews.setTextViewText(R.id.text1, newValue");
   widgetManager.updateAppWidget(thisWidget, remoteViews);

这是将第二个 textView 的值设置为布局中定义的默认值。 如何让它不改变第二个textView的值,或者如何获取第二个textView的值以便能够调整到相同?

android widget textview
2个回答
4
投票

据我所知,每当调用

onUpdate
时,它都会更新所有小部件,所以我所做的是使用 SharedPreferences,所以当我最初设置
TextView
时,我将 textView 文本保存到共享首选项,然后获得首选项当我更新的时候。我在
for
循环中完成这一切。

这是我的

onUpdate

@Override
public void onUpdate(Context context, AppWidgetManager awm, int[] appWidgetIds){
    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
    int appWidgetId;
    for (int i=0;i<appWidgetIds.length;i++){
            appWidgetId = appWidgetIds[i];

            String widgetLabel = pref.getString("label"+appWidgetId, "");
            // I previously saved "widgetLabel" when I created the widget in my 
            // ConfigurationActivity
            M.updateWidget(context, appWidgetId, widgetLabel);
                // I put this in another class so it's more manageable.
        }



}

在我的M班:

public static void updateWidget(Context context, int appWidgetId, String widgetLabel){

        SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();

        RemoteViews updateViews;
        int layoutId = R.layout.layout;
        int viewId = R.id.layout;

        updateViews = new RemoteViews(context.getPackageName(),
                layoutId);
        updateViews.setTextViewText(R.id.widgetlabel, widgetLabel);
        editor.putString("label"+appWidgetId, widgetLabel);
        editor.commit();

        Intent intent = new Intent(context, ClickAction.class); 
        PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        updateViews.setOnClickPendingIntent(viewId, pendingIntent);

        AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, updateViews);
    }

我希望这是有道理的。如果我需要详细说明任何内容,请告诉我。


0
投票

如果在app.so中清除了用户数据,则SharedPreferences应被清除。在这种情况下我们如何从 id 获取用户数据???

© www.soinside.com 2019 - 2024. All rights reserved.