2

OK、私は Android ウィジェットを持っていますが、Android ウィジェットの更新に問題がありました。簡単なハードコードをいくつか使用しましsetTextViewTextたが、アプリをデバッグしても何も起こりません..

私のコード:

public class Widget extends AppWidgetProvider {

RemoteViews views;

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    int N = appWidgetIds.length;
    views = new RemoteViews(context.getPackageName(), R.layout.widget);
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];
        String alarm = Settings.System.getString(context.getContentResolver(),
            Settings.System.NEXT_ALARM_FORMATTED);
        views.setTextViewText(R.id.tvAlarm, alarm);

        views.setTextViewText(R.id.tvNextAlarm, "qwertyuiop");

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}

アラームなど、一部のコードが間違っていることはわかっており、何らかの方法でバッテリーの状態を取り込もうとしていますが、それは進むべきBroadcastReceiver道ではないと言われたので、現時点ではコメントアウトしました。

しかし、主な問題は、変更するためのウィジェットの更新が機能しTextViewないことです...

4

1 に答える 1

3

ウィジェットの 1 つでこのコードを試してみたところ、問題なく動作します。

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

    // Get ids of all the instances of the widget
    ComponentName widget = new ComponentName(context, MediaWidgerProvider.class);
    int[] widgetIds = appWidgetManager.getAppWidgetIds(widget);

    for (int widgetId : widgetIds) {

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

        remoteViews.setTextViewText(R.id.widget_text, "Hello");

        appWidgetManager.updateAppWidget(widgetId, remoteViews);
    }
}
于 2013-06-08T18:36:45.863 に答える