Создание кнопки CustomButton Extends для предварительной установки условий, которые вызывались до нажатия кнопки мыши. - PullRequest
1 голос
/ 17 апреля 2020

Я расширил класс Button и хочу запускать такие методы, как isInternetConnected и isUserLoggedIn, когда пользователь нажимает эту кнопку и после выполнения onclick, если все условия удовлетворены.

Например, если я создал простую форму, где имя пользователя, адрес электронной почты, номер телефона. и отправить кнопку размещены. Когда пользователь сначала нажимает на кнопку «Отправить», он проверяет isInternetConnected и isUserLoggedIn, удовлетворяет ли это, а затем выполняет последнюю операцию, сохраняя пользовательские данные на сервере или в любом другом месте.

public class CustomButton extends Button {
private static final String TAG = "CustomButton";

public CustomButton(Context context) {
    super(context);
}

public CustomButton(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomButton(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

public CustomButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
}

Если это возможно, то Мне не нужно проверять каждый раз

  `mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!isInternetConnected) {
                //show dialog or snackbar
            } else if (!isUserLoggedIn) {
                //show dialog or snackbar
            }else {
                // save data
            }
        }
    });`

1 Ответ

2 голосов
/ 20 апреля 2020

Теперь я понимаю, что вы спрашиваете. Идеальным решением для вашей проблемы было бы АОП (аспектно-ориентированное программирование). Это должно помочь вам:

https://medium.com/@jdvp / аспектно-ориентированное программирование в android -159054d52757 https://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/

Это lib должна помочь вам:

https://www.eclipse.org/aspectj/

...