Одна и та же кнопка на нескольких действиях - PullRequest
7 голосов
/ 01 мая 2011

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

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

Кнопка входа имеет одинаковый идентификатор во всем приложении, что равно+ id / signIn "

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

Будем очень благодарны за любые предложения и / или рекомендации.Спасибо:)

Ответы [ 2 ]

10 голосов
/ 02 мая 2011

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

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

android:onClick="onSignInClicked"

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

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

Вы также можете создать интерфейс, содержащий метод 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, установив атрибут name вашего тега application:

<application android:name=".MyApplication" [...]
0 голосов
/ 01 мая 2011

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

...