Поверх вашего класса Widget
создайте статическую переменную, которая будет вашим onClick
:
private static final String MyOnClick = "myOnClickTag";
Определите вспомогательный метод для автоматизации создания каждого PendingIntent
:
protected PendingIntent getPendingSelfIntent(Context context, String action) {
Intent intent = new Intent(context, getClass());
intent.setAction(action);
return PendingIntent.getBroadcast(context, 0, intent, 0);
}
Установите этот тег onClick
на свой вид, как показано ниже:
remoteViews.setOnClickPendingIntent(R.id.button,
getPendingSelfIntent(context, MyOnClick));
создайте метод onReceive
в вашем классе Widget
и установите в нем это событие onClick
:
public void onReceive(Context context, Intent intent) {
if (MyOnClick.equals(intent.getAction())){
Bundle extras = intent.getExtras();
if (buttonState) {
buttonState = false;
views.setInt(R.id.appwidget_layout, "setBackgroundColor", Color.GREEN);
views.setInt(R.id.appwidget_text, "setBackgroundColor", Color.GREEN);
Toast.makeText(context, "Clicked!!", Toast.LENGTH_SHORT).show();
} else {
buttonState = true;
views.setInt(R.id.appwidget_layout, "setBackgroundColor", Color.RED);
views.setInt(R.id.appwidget_text, "setBackgroundColor", Color.RED);
Toast.makeText(context, "Clicked!!", Toast.LENGTH_SHORT).show();
}
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(new ComponentName(context, ExampleAppWidgetProvider.class),
views);
}
};
При каждом нажатии на вид, который вы устанавливаете, onReceive
фиксирует это и выполняет действие точно так же, как наше обычное onClick
событие
.
Что касается вашего onUpdate
:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
for (int appWidgetId : appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget_det);
thisWidget = new ComponentName(context, MyWidgetProvider.class);
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 cords");
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
}