Такая же кнопка для нескольких действий

У меня есть кнопка входа, расположенная точно в одном и том же месте на каждом мероприятии, и у меня есть 20 действий на данный момент, но скоро поднимется намного выше, и я действительно не хочу копировать и вставлять один и тот же код в Поэтому я ищу простое и эффективное решение для обработки события onClick, которое будет работать в глобальном масштабе во всем приложении.

Например, если пользователь A нажимает на кнопку входа в действие 1 и подписывается, он будет показывать, что он вступил в действие 2 и 3 и т. Д. До тех пор, пока они не выйдут из системы.

Кнопка входа в систему имеет одинаковый идентификатор во всем приложении, которое является «@ + id / signIn»

Было бы проще назвать одну функцию в начале каждого действия? Я думал, что это не будет любое эффективное использование вычислительной мощности и т. Д. ?!

Любые предложения и / или рекомендации будут высоко оценены. Спасибо 🙂

Вы не можете избежать реализации этого слушателя во всех своих действиях в любом случае. Но вы можете сделать это немного более организованным образом:

Вы можете написать собственный макет заголовка для своего приложения ( /res/layout/header.xml ), в котором у вас есть кнопка «Вход» с набором кликов (указывающий на метод onSignInClicked ):

 android:onClick="onSignInClicked" 

Затем вы включаете этот заголовок в каждый макет деятельности:

 <include android:id="@+id/header" layout="@layout/header" /> 

Вы также можете создать интерфейс, который содержит onSignInClicked метода onSignInClicked , и всеми вашими действиями, реализующими этот интерфейс, вы вынуждаете их определять onSignInClicked метода onSignInClicked .

То, что вы на самом деле там делаете, также может быть

  • Статический метод внутри общедоступного класса или
  • Хорошо параметризованный метод внутри вашего класса расширения Application .

Поэтому во всех ваших действиях этот метод может быть:

 public static void onSignInClicked(View view) { // static method with call with reference to the current activity SignInHelper.doSignIn(this); } 

или

 public static void onSignInClicked(View view) { // global method in your `Application` extension // with reference to the current activity ((MyApplication)getApplicationContext()).doSignIn(this); } 

Если вы выберете второй способ, не забудьте обновить свой androidManifes.xml , установив атрибут имени вашего тега application :

 <application android:name=".MyApplication" [...] 

Вы можете создать кнопку как пользовательское представление.

Intereting Posts
Ошибка: для Multi Dex требуется версия Build Tools Android зашифровать / дешифровать базу данных sqlite 100% безопасно Java.lang.VerifyError: Ожидание кадра стека в целевой точке 57 Неудачное разрешение: Lcom / abhi / barcode / frag / libv2 / R $ string Проверяйте пользователя во время регистрации, отправляя и получая sms через Twilio Android: создать собственное приложение для графического интерфейса с NDK? Цвет заголовка AppCompat OnKeyPress, onKeyDown, onKeyUp события не запускаются в Firefox / Chrome под Android при наборе букв Android – вход в Google с помощью входа в систему вместо автоматического входа в систему Уменьшить код для событий Button onClick Заполнение статусной строки CoordinatorLayout исчезает во время транзакций фрагментов Android adb включить Wi-Fi через adb Как изменить значок значка панели действий при нажатии Dagger 2 issue overriding single предоставляет аннотированный метод из модуля в библиотеке, которая использует приложение Ограничить количество строк в TextView