Android-виджет onclick прослушиватель для нескольких кнопокAndroid

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

Сообщение Anonymous »


Я пытаюсь создать виджет для своего приложения. Судя по моему чтению сайта разработчиков Android, все ваши слушатели onclick должны иметь намерение. Но что, если я просто хочу, чтобы моя кнопка обновляла данные в самом виджете, и я не хочу начинать новое действие?

Вот демо-код Android:

Намерение намерение = новое намерение (контекст, ПримерАктивность.класс); PendingIntent pendingIntent = PendingIntent.getActivity(контекст, 0, намерение, 0); // Получаем макет виджета приложения и прикрепляем прослушиватель по клику //к кнопке Представления RemoteViews = новые RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout); views.setOnClickPendingIntent(R.id.button, pendingIntent); Мне нужна кнопка, которая при нажатии на нее выполняет http-веб-вызов, а затем отображает результаты в виджете. Как мне это сделать, если мне нужно использовать намерения? Также мне нужно иметь возможность различать, какие кнопки были нажаты.

Почему виджеты используют намерения, а не обычный прослушиватель onclick, который вызывает такую ​​функцию, как действия?

ИЗМЕНИТЬ

Мой поставщик виджетов:

публичный класс MyWidgetProvider расширяет AppWidgetProvider { частная статическая окончательная строка MyOnClick1 = "myOnClickTag1"; частная статическая окончательная строка MyOnClick2 = "myOnClickTag2"; частная статическая окончательная строка MyOnClick3 = "myOnClickTag3"; @Override public void onUpdate (контекст контекста, AppWidgetManager appWidgetManager, int [] appWidgetIds) { // Получить все идентификаторы ComponentName thisWidget = новое ComponentName(context, MyWidgetProvider.class); int [] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); for (int widgetId: allWidgetIds) { RemoteViews RemoteViews = новые RemoteViews(context.getPackageName(), R.layout.widget_layout); RemoteViews.setOnClickPendingIntent(R.id.widget_button_stayarm, getPendingSelfIntent(context, MyOnClick1)); RemoteViews.setOnClickPendingIntent(R.id.widget_button_awayarm, getPendingSelfIntent(context, MyOnClick2)); RemoteViews.setOnClickPendingIntent(R.id.widget_button_dissarm, getPendingSelfIntent(context, MyOnClick3)); RemoteViews.setTextViewText(R.id.widget_textview_gpscoords, «кабели GPS»); appWidgetManager.updateAppWidget(widgetId, RemoteViews); } } protected PendingIntent getPendingSelfIntent (контекст контекста, строковое действие) { Намерение намерение = новое намерение (контекст, getClass()); намерение.setAction(действие); return PendingIntent.getBroadcast(контекст, 0, намерение, 0); } @Override public void onReceive (контекст контекста, намерение намерения) { если (MyOnClick1.equals(intent.getAction())) { // здесь ваше действие onClick Toast.makeText(context, «Button1», Toast.LENGTH_SHORT).show(); Log.w("Виджет", "Нажата кнопка1"); } else if (MyOnClick2.equals(intent.getAction())) { Toast.makeText(context, "Button2", Toast.LENGTH_SHORT).show(); Log.w("Виджет", "Нажата кнопка2"); } else if (MyOnClick3.equals(intent.getAction())) { Toast.makeText(context, "Button3", Toast.LENGTH_SHORT).show(); Log.w("Виджет", "Нажата кнопка3"); } }; } Мой манифест Android:
Ответить

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

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

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

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

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