为什么我的应用小部件不会在API 3或4中更新?

D. *_*ick 6 java android android-widget android-appwidget

我正在开发一个Android小部件,它在API Level 5或更高版本中运行良好.它在API级别1或2中根本不受支持.它应该在3和4中完全正常工作,但由于某种原因,小部件不会更新.

onUpdate方法被调用并执行而没有错误; 但是,在3和4中它不会更改小部件的文本.我几乎不知所措.有什么想法吗?

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);

    DataAccess helper = new DataAccess(context);
    String text = helper.getCurrentText();
    helper.close();

    if (text != null)
        views.setTextViewText(R.id.widget_text, text);

    Intent intent = new Intent(context, WidgetDetailsActivity.class);
    PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.widget, pending);

    appWidgetManager.updateAppWidget(appWidgetIds, views);
}
Run Code Online (Sandbox Code Playgroud)

Blu*_*ell 0

尝试这个:

在更新方法结束时,您需要调用 super.

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);

    DataAccess helper = new DataAccess(context);
    String text = helper.getCurrentText();
    helper.close();

    if (text != null)
        views.setTextViewText(R.id.widget_text, text);

    Intent intent = new Intent(context, WidgetDetailsActivity.class);
    PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.widget, pending);

    appWidgetManager.updateAppWidget(appWidgetIds, views);

   super.onUpdate(context, appWidgetManager, appWidgetIds);
}
Run Code Online (Sandbox Code Playgroud)