Как я могу создать свой метод onReceive в моем классе виджетов Android для переключения изображения ImageView?

#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. Как насчет того, чтобы отредактировать свой вопрос и скопировать-вставить ваш фактический исполняемый код? То, что у вас есть в настоящее время, является бессмыслицей.