Я хочу сделать виджет с 2 кнопками (один из них представляет собой текстовое изображение с номером). Одна кнопка должна увеличивать число, а другая - уменьшать ее.Android: Отсутствует дополнение Intent (работает с виджетами)
Вот мои переменные (2x остросюжетные имена и ИНТ для числа)
private static final String PLUS_ONE = "Plus1";
private static final String MINUS_ONE = "minus1";
static int counter = 0;
OnUpdate():
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.plus1counter_widget);
remoteViews.setOnClickPendingIntent(R.id.counter_widget, getPendingSelfIntent(context, PLUS_ONE, counter));
remoteViews.setOnClickPendingIntent(R.id.img_downWid, getPendingSelfIntent(context, MINUS_ONE, counter));
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}}
getPendingSelfIntent мой метод для создания намерения, положив INT значение в нем, и возвращая PendingIntent Здесь подробно:
protected PendingIntent getPendingSelfIntent(Context context, String action, int i) {
Intent intent = new Intent(context, Plus1CounterAppWidgetProvider.class);
intent.setAction(action);
intent.putExtra("safeInt", i);
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);}
и в конце концов мой onReturn(), в котором я хочу, чтобы установить счетчик на значение, которое я дал Намерению и выполнить действие:
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
counter = intent.getIntExtra("safeInt", 0);
if (PLUS_ONE.equals(intent.getAction())) {
counter++;
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.plus1counter_widget);
remoteViews.setTextViewText(R.id.counter_widget, Integer.toString(counter));
AppWidgetManager.getInstance(context).updateAppWidget(new ComponentName(context, Plus1CounterAppWidgetProvider.class), remoteViews);
}
if (MINUS_ONE.equals(intent.getAction())) {
counter--;
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.plus1counter_widget);
remoteViews.setTextViewText(R.id.counter_widget, Integer.toString(counter));
AppWidgetManager.getInstance(context).updateAppWidget(new ComponentName(context, Plus1CounterAppWidgetProvider.class), remoteViews);
}}
Позвонив
counter = intent.getIntExtra("safeInt", 0);
счетчик всегда должен быть установлен на 0, что означает, что дополнительного значения нет. Я просто не понимаю почему! Любые решения? :)
здесь окончательное применение [plus1counter] (https://play.google.com/store/apps/details?id=com.apperrant.plus1counter) –