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

У меня есть кнопка входа, расположенная точно в одном и том же месте на каждом мероприятии, и у меня есть 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" [...] 

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