Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AsyncTask在android home widget中将TextView的上一个文本与新的更新文本进行比较?_Android_Android Asynctask_Android Widget_Textview_Android Pendingintent - Fatal编程技术网

使用AsyncTask在android home widget中将TextView的上一个文本与新的更新文本进行比较?

使用AsyncTask在android home widget中将TextView的上一个文本与新的更新文本进行比较?,android,android-asynctask,android-widget,textview,android-pendingintent,Android,Android Asynctask,Android Widget,Textview,Android Pendingintent,我制作了一个简单的主屏幕小部件,它有两个文本视图字段和一个刷新按钮。文本视图是从AsyncTask加载的,AsyncTask下载并解析小XML文件。刷新按钮使用PendingEvent再次调用onUpdate,最终再次调用AsyncTask。我有一个简单的模型类XMLValues,它可以存储从XML解析的值,并在AppWidgetProvider类中初始化: public class XmlValues { private int mFieldValue1; public int getFie

我制作了一个简单的主屏幕小部件,它有两个文本视图字段和一个刷新按钮。文本视图是从AsyncTask加载的,AsyncTask下载并解析小XML文件。刷新按钮使用PendingEvent再次调用onUpdate,最终再次调用AsyncTask。我有一个简单的模型类XMLValues,它可以存储从XML解析的值,并在AppWidgetProvider类中初始化:

public class XmlValues {
private int mFieldValue1;

public int getFieldValue1() {
    return mFieldValue1;
}
public void setFieldValue1(int FieldValue) {
    mFieldValue1 = FieldValue;

private int mFieldValue2;

public int getFieldValue2() {
    return mFieldValue2;
}
public void setFieldValue2(int FieldValue) {
    mFieldValue2 = FieldValue;
}
}

在AsyncTask中,我传入RemoteViews视图、int-appWidgetID、AppWidgetManager-AppWidgetManager,其中下载并解析XML,postExecute方法如下所示:

protected void onPostExecute(XmlValues xv) {
       if (isCancelled()) {
           xv = null;
       }

       views.setTextViewText(R.id.textView1, xv.getFieldValue1());
       views.setTextViewText(R.id.textView2, xv.getFieldValue1());
       WidgetManager.updateAppWidget(WidgetID, views);

   } 

这一切都可以用正确的值加载TextView,但是我一直在尝试执行以下操作-因为我正在解析的XML值可能会发生更改,例如,如果来自新XML的新值大于小部件中的当前值,我希望更改TextView的颜色。我怎样才能做到这一点?我尝试四处查看,但没有找到如何影响在主窗口小部件类中创建的模型类对象,从AsyncTask的onPostExecute方法。

您可以使用静态int字段存储上一个值:

private static int lastValue1 = -1; // you can use other initial value
private static int lastValue2 = -1;
然后您可以使用它,例如:

if( lastValue1 < xv.getFieldValue1() ) {
  lastValue1 = xv.getFieldValue1();
  views.setTextViewText(R.id.textView1, xv.getFieldValue1());
}
// the same for second value.

另一个解决方案是将最后一个值存储在SharedReference中。

谢谢,这正是我需要的!