Кнопка виджета приложения для запуска onUpdate - PullRequest
1 голос
/ 20 марта 2012
public class ExampleAppWidgetProvider extends AppWidgetProvider {

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

    final int N = appWidgetIds.length;

    // Perform this loop procedure for each App Widget that belongs to this
    // provider
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];

        // Get the layout for the App Widget and attach an on-click listener
        // to the button
        RemoteViews views = new RemoteViews(context.getPackageName(),
                R.layout.example_appwidget);

        Intent intent = new Intent(context, Fragment_testActivity.class);
        intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
                0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        views.setOnClickPendingIntent(R.id.button1, pendingIntent);

        // Tell the AppWidgetManager to perform an update on the current app
        // widget
        appWidgetManager.updateAppWidget(appWidgetId, views);

    }
}

}

Почему button1 не вызывает onUpdate (или onReceive), когда виджет добавляется на домашний экран и при нажатии кнопки1? Добавление / удаление виджета запускает эти события, но не нажимает кнопку.

Манифест , объявление виджета , объявление макета виджета

1 Ответ

0 голосов
/ 20 марта 2012

Первое, что я вижу:

new Intent(context, Fragment_testActivity.class);

Вы указываете действие в качестве компонента-получателя.Деятельность не имеет ничего общего с процессом обновления.Попробуйте установить ExampleAppWidgetProvider в качестве компонента намерения или не указывать компонент вообще (например, с помощью new Intent()).

...