Android Нажмите на виджет не работает после добавления виджета - PullRequest
2 голосов
/ 02 марта 2011

prefs.java

            Intent resultValue = new Intent();
            resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
            setResult(RESULT_OK, resultValue);

            Context context = getApplicationContext();

            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
            Intent configIntent = new Intent(context, Prefs.class);
            configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, configIntent, 
                                                            PendingIntent.FLAG_UPDATE_CURRENT);

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

            AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, views);

widget.xml

Проблема в том, что когда я добавляю виджет, ЭТО НЕ НАЖИМАЕТСЯ.после перезагрузки телефон работает нормально.также после развертывания новой версии сборки, виджет является щелкающим

есть идеи?

Ответы [ 2 ]

2 голосов
/ 19 марта 2011

большой.проблема была в НЕ ОТПРАВЛЯТЬ ACTION_APPWIDGET_UPDATE.поэтому перед закрытием настроек я отправляю широковещательную рассылку:

Intent updateIntent = new Intent(this, CallBackWidget.class);
updateIntent.setAction("PreferencesUpdated");
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
sendBroadcast(updateIntent);

и в методе onreceive метода виджета проверяю широковещательную рассылку

if ("PreferencesUpdated".equals(action)) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
appWidgetManager.updateAppWidget(appWidgetId, views);
int[] appWidgetIds = new int[] {appWidgetId};
onUpdate(context, appWidgetManager, appWidgetIds);
        }           

, теперь она работает как талисман;)

1 голос
/ 18 марта 2011

Возможно, у вас есть экран настроек для вашего виджета.Если это так, то виджет НЕ создается для вас при первом добавлении.Трудно сказать по предоставленному коду.

см. http://developer.android.com/guide/topics/appwidgets/index.html. В частности, это предложение

Метод onUpdate () не будет вызываться при создании виджета приложения (система не отправит широковещательную рассылку ACTION_APPWIDGET_UPDATE, когда будет запущено действие конфигурации).Ответственность за запрос обновления у AppWidgetManager при создании виджета приложения лежит на активности конфигурации.Однако onUpdate () будет вызываться для последующих обновлений - он пропускается только в первый раз.

...