Я пытаюсь реализовать кнопку обновления в своем приложении, чтобы позволить пользователю вручную повторно синхронизироваться с веб-сервер. Код работает, но у меня возникли проблемы с определением представлений действий (по крайней мере, я думаю, что это то, что я должен использовать).
Мой пункт меню здесь:
-
Проблема в том, , он всегда показывает ProgressBar. Мне было интересно, работает ли он как виджет поиска (единственный пример, который я действительно вижу в Интернете), и добавил тег collActionView
к showAsAction
, и это предотвратило его появляется сразу. Однако, когда я нажимаю кнопку обновления, значок исчезает (хорошо), но также исчезает заголовок на панели действий, а индикатор выполнения появляется в левой части окна, где раньше был заголовок. что я хотел.
В качестве последней попытки я попытался добавить это в свой код и удалить actionViewClass
из XML:
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
Log.w("MyApp", "Have Menu");
ProgressBar pb = new ProgressBar(ReadingList.this);
refresh.setActionView(pb);
Это тоже не сработало, выдав мне ошибку нулевого указателя. на setActionView
.
Мне нужно решение, которое я мог бы вызывать из любой функции (в начале есть период автосинхронизации, во время которого я хотел бы также отображать ProgressBar), и иметь возможность вернуть его к статическому значку после.
Я попытался прочитать этот вопрос, но не могу понять, что означает ответ. Я чувствую, что пытался сделать именно то, что он говорит, но я думаю, что нет. Любая помощь очень ценится.
Редактировать: По предложению Шастракси.
public class IconSwitcher extends LinearLayout{
public IconSwitcher(Context context) {
super(context);
ProgressBar pb = new ProgressBar(context);
ImageView iv = new ImageView(context);
addView(iv);
addView(pb);
}
}
Пока это мой класс. Однако, когда я пытаюсь сослаться на него с помощью:
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
IconSwitcher ic = (IconSwitcher) refresh.getActionView();
, я получаю ошибку нулевого указателя. при создании IconSwitcher. XML-код кнопки выглядит следующим образом:
-
Мне просто трудно сослаться на это представление IconSwitcher.
Редактировать 2: У меня вообще проблемы со ссылкой на пункт меню.
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
refresh.setVisible(false);
Также дает мне нулевой указатель, когда я пытаюсь установить видимость. Что не так с моими ссылками?