Привязывайте прослушиватели к настраиваемому меню для разных действий в Android

StackOverflow https://stackoverflow.com//questions/24006512

Вопрос

Я новичок в разработке Android.Я хочу, чтобы каждое действие имело одинаковое всплывающее меню в правом верхнем углу.Я использую LinearLayout в xxmenu.xml и включите его в XML-файлы макета каждого действия.Дисплей в порядке.Как OnClickListener должно быть таким же, я не хочу реализовывать OnClick функции в файле Java каждого действия.Как я могу это сделать?

Я знаю, что в Android есть встроенное решение меню через OptionsMenu, но я не знаю, можно ли его настроить и как (например, я хочу, чтобы он находился в верхнем правом углу, с разным фоном, каждый элемент имел значок изображения, за которым следовал texts, one-side shadow, и т. д.)

Это было полезно?

Решение 2

Во-первых, решение состоит в том, чтобы определить базовый класс (например, BaseActivity) расширить Activity, и фактические действия, использующие это меню для расширения BaseActivity (например., MainActivity extends BaseActivity).

Во-вторых, используйте отдельный XML-файл для определения макета меню и включите его в другие макеты.Простой способ связать слушателей — использовать android:onClick="toggleMenu".

В-третьих, реализовать public void toggleMenu(View v) в Базовой Активности.

Мы также можем вызывать представления и выполнять привязки в коде Java.Но я столкнулся с проблемой последовательности кода: если я получу кликабельное представление через findViewById в BaseActivity's onCreate(), он возвращается null, и привязка не удалась.Таким образом, поиск представлений и последующих привязок должен выполняться в дочерних классах (например, MainActivity), после звонка super.onCreate().

Другие советы

Создайте абстрактный класс BaseActivity, реализующий onCreateOptionsMenu и onOptionsItemSelected для вашего общего меню и пунктов меню.Затем сделайте так, чтобы все остальные ваши действия выходили за рамки этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top