#android #widget #imageview #toggle
#Android #виджет #imageview #переключение
Вопрос:
Благодаря некоторым руководствам я теперь создал свой первый рабочий маленький виджет Android.
У него есть ImageView, который изменяет его изображение, когда я нажимаю на него один раз.
Но теперь я хочу щелкнуть по нему несколько раз, чтобы перейти к другому изображению, как кнопка переключения.
Поэтому я установил следующее ограничение IF в своем методе onReceive:
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
try {
if(counter %2 == 0) {
views.setImageViewResource(R.id.iv1, R.drawable.button_state1);
cn1 = new (context, MyDailyPlateWidgetProvider.class);
AppWidgetManager.getInstance(context).updateAppWidget(cn1, views);
counter ;
} else { counter ;
views.setImageViewResource(R.id.iv1, R.drawable.button_state2);
cn2 = new (context, MyDailyPlateWidgetProvider.class);
AppWidgetManager..getInstance(context).updateAppWidget(cn2, views);
}
}
// ...
}
Но мне кажется, что я не могу постоянно изменять свой int counter
with counter
.
Есть ли какой-либо способ установить значение int моего класса с помощью щелчка по моему виджету или другого решения для создания какого-либо поведения переключения в виджете?
Возможно ли это вообще без запущенной фоновой службы?
Ответ №1:
В противном случае вам не удастся увеличить счетчик. Представьте, что сначала счетчик равен 0, поэтому тогда (счетчик%2 == 0) имеет значение true, поэтому он выполняет первую часть и увеличивает счетчик. В следующий раз счетчик равен 1, поэтому (счетчик% 2 == 0) равен false, поэтому он выполняет вторую часть … каждый раз с этого момента, потому что счетчик всегда равен 1! Просто увеличивайте счетчик каждый раз.
Комментарии:
1. Извините, но я неправильно отредактировал код здесь, у меня изначально был второй счетчик в операторе Else. Но он даже не изменился на другое изображение, хотя счетчик должен был быть равен 1 после первого щелчка по изображению.
2. Как насчет того, чтобы отредактировать свой вопрос и скопировать-вставить ваш фактический исполняемый код? То, что у вас есть в настоящее время, является бессмыслицей.