SetOnClickPendingIntent не работает для кнопки в виджете AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 SetOnClickPendingIntent не работает для кнопки в виджете Android

Сообщение Anonymous »


Я установил setOnClickPendingIntent в методе onUpdate для просмотра изображения и кнопки. При нажатии imageview или двух кнопок метод onReceive не вызывается.

NewAppWidget.java

публичный класс NewAppWidget расширяет AppWidgetProvider { @Override public void onUpdate (контекст контекста, AppWidgetManager appWidgetManager, int [] appWidgetIds) { для (int appWidgetId: appWidgetIds) { updateAppWidget(context,appWidgetManager,appWidgetId); } } static void updateAppWidget(Контекст контекста, AppWidgetManager appWidgetManager, int appWidgetId) { Представления RemoteViews = новые RemoteViews(context.getPackageName(), R.layout.new_app_widget); Намерение button1Intent = новое намерение (контекст, NewAppWidget.class); button1Intent.setAction(ACTION_BUTTON1_CLICK); PendingIntent button1PendingIntent = PendingIntent.getBroadcast(context, 0, button1Intent,PendingIntent.FLAG_IMMUTABLE); views.setOnClickPendingIntent(R.id.button1, button1PendingIntent); views.setOnClickPendingIntent(R.id.imageRightOfButtons,getPendingIntent(context,appWidgetId)); Строка currentTime = DateFormat.getTimeInstance(DateFormat.SHORT).format(new Date()); Строка currentDate = DateFormat.getDateInstance(DateFormat.SHORT).format(new Date()); views.setTextViewText(R.id.text_time, "последнее обновление "+currentTime); views.setTextViewText(R.id.text_date, currentDate); int [] appWidgetIds = appWidgetManager.getAppWidgetIds (новое имя компонента (контекст, NewAppWidget.class)); for (int w: appWidgetIds) { appWidgetManager.updateAppWidget(w,views); } appWidgetManager.updateAppWidget(appWidgetId, просмотры); } public static PendingIntent getPendingIntent (контекст контекста, int appWidgetId) { Намерение намерение = новое намерение (контекст, NewAppWidget.class); Intent.setAction("com.example.myapp.DATA_UPDATE"); Intent.putExtra("appWidgetId","11111111111111111"); return PendingIntent.getBroadcast(context, 2, Intent, PendingIntent.FLAG_IMMUTABLE); } @Override public void onReceive (контекст контекста, намерение намерения) { super.onReceive(контекст, намерение); int clickedButtonBackgroundColor = Color.parseColor("#FD681C"); int unclickedButtonBackgroundColor = Color.WHITE; int unclickedButtonTextColor = Color.parseColor("#FD681C"); Log.d("NewAPPWidget", "Метод OnReceive"); Log.d("NewAPPWidget", "Имя намерения: "+intent.getAction()); Представления RemoteViews = новые RemoteViews(context.getPackageName(), R.layout.new_app_widget); если (ACTION_BUTTON1_CLICK.equals(intent.getAction()))) { Log.d("NewAPPWidget", "button1"); updateButtonBackground(context,views,R.id.button1, clickedButtonBackgroundColor, Color.WHITE); updateButtonBackground(context,views,R.id.button2, unclickedButtonBackgroundColor, unclickedButtonTextColor); } иначе, если (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(intent.getAction()) || "com.example.myapp.DATA_UPDATE".equals(intent.getAction())) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(контекст); Map mps = fetchDataFromApp(context); Строка arg1 = mps.get("arg1"); Строка arg2 = mps.get("arg2"); Строка arg3 = mps.get("arg3"); int [] appWidgetIds = appWidgetManager. если (appWidgetIds!= ноль) { для (int appWidgetId: appWidgetIds) { updateAppWidget (контекст, appWidgetManager, appWidgetId); } } updateAppWidgetWithData (контекст, arg1, arg2, arg3); } } } AndroidManifest.xml

new_app_widget.xml

Я ожидал, что когда я нажму на изображение или кнопку с идентификатором «button1», будет вызван метод OnReceive, но этого не произошло.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»