Привязывайте прослушиватели к настраиваемому меню для разных действий в Android
-
20-12-2019 - |
Вопрос
Я новичок в разработке 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
для вашего общего меню и пунктов меню.Затем сделайте так, чтобы все остальные ваши действия выходили за рамки этого.