Как вы знаете из файла README, существует 3 вида дверных звонков.
Активные дверные звонки используются для запуска активностей.
В классе Doorbell
определены 4 статических метода для создания активных дверных звонков:
Doorbell.with(Context)
;Doorbell.with(Activity)
;Doorbbell.with(Fragment)
;Doorbell.with(Starter)
.Все они возвращают экземпляр класса ActivityDoorbell.Builder
, чтобы построить активный дверной звонок с некоторыми методами, перечисленными ниже в цепочке.
.start(Activity.class) // или
.start(Intent) // или
.start(Activity1.class, Activity2.class, ...) // или
.start(Intent, Intent, ...)
.requestCode(int)
Когда указан и действителен код запроса, то будет вызван метод .startActivityForResult()
стартера.
.condition(boolean) // или
.condition(Condtion)
Если условие не указано или Condition
равно нулю, то условие дверного звонка всегда будет выполнено.
Существует 4 типа слушателей, которые будут уведомлены.
.ring()
..ring(OnAllowListener)
..ring(OnBlockListener)
..ring(RingListener)
.При передаче необязательного условия порядок вызова обратных вызовов следующий:
onAllow()
связанной двери, если он задан.onAllow()
, если он задан.onComplete()
связанной двери, если он задан.onComplete()
, если он задан.В противном случае вызывается метод onBlock()
связанной двери и затем вызывается обратный вызов onBlock()
слушателя, если он задан.
Есть удобный класс SimpleRingListener
, который можно расширить, если вы хотите прослушивать только подмножество обратных вызовов звонка: onAllow()
, onComplete()
или onBlock()
.
.door(Door)
После вызова метода .door()
и если заданный параметр двери не равен нулю, условие будет проигнорировано.
.extra(String, int)
.extra(String, boolean)
.extra(String, long)
.extra(String, float)
.extra(String, double)
.extra(String, String)
// ...
.extras(Bundle)
Обратите внимание: если вы запускаете несколько активностей и эти методы связаны, все намерения будут затронуты.
Эта функция требует Android SDK API >= 16.
.options(Bundle)
.enter(int) // или
.exit(int) // или
.transition(int, int)
Возможно, ваши приложения используют MVP, и вы хотите запускать активности в классах Presenter
. Поэтому пусть ваш класс Presenter
реализует интерфейс Starter
.
public class Presenter implements Starter {
private Starter starter = Starters.newStarter(fragment);
@Override
public void startActivity(Intent intent, Bundle options) {
// Take care of NPE
starter.startActivity(intent, options);
}
@Override
public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
// Take care of NPE
starter.startActivityForResult(intent, requestCode, options);
}
@Override
public void startActivities(Intent[] intents, Bundle options) {
starter.startActivities(intents, options);
}
@Nullable
@Override
public Activity getActivity() {
// Take care of NPE
return starter.getActivity();
}
@Override
public int getEnter() {
return starter.getEnter();
}
@Override
public int getExit() {
return starter.getEnter();
}
}
А затем создайте дверной звонок с презентатором с помощью: Doorbell.with(presenter);
Обратные дверные звонки используются для вызова обратных вызовов с обязательным условием.
В классе Doorbell
определены 3 статических метода для создания обратных дверных звонков:
Doorbell.create(boolean)
;Doorbell.create(Condition)
;Doorbell.create(Door)
— настройка двери для участия и также как условие звонка. Все они возвращают экземпляр класса CallbackDoorbell.Builder
для создания обратного вызова.Существует 3 вида слушателей, которые должны быть уведомлены.
.ring(OnAllowListener)
.ring(OnBlockListener)
.ring(RingListener)
Когда условие выполнено, порядок вызова обратных вызовов следующий:
onAllow()
связанной двери, если он задан.onAllow()
слушателя звонка, если он задан.onComplete()
связанной двери, если он задан.onComplete()
слушателя звонка, если он задан.В противном случае вызывается onBlock()
связанной двери, если он задан, а затем вызывается обратный вызов onBlock()
слушателя, если он задан.
Дверной звонок используется для того, чтобы звонить в двери.
Мы определяем логическую дверь, которая ничего не делает, когда условие выполняется, или выдаёт сообщение, когда заблокирована.
/**
* Дверь для подтверждения входа пользователя.
*/
public class LoginDoor implements Door {
@Override
public boolean test() {
return condition;
}
@Override
public void onAllow() {
}
@Override
public void onComplete() {
}
@Override
public void onBlock() {
toask("Сначала вы должны войти!");
}
}
Doorbell.ring(new LoginDoor());
Когда условие логической двери выполнено, будет вызван метод onAllow()
, в противном случае будет вызван onBlock()
.
Существует удобный класс под названием SimpleDoor
, который можно расширить, если вы хотите прослушивать только подмножество обратных вызовов.
Здесь логическая дверь не нуждается в методах onAllow()
и onComplete()
, потому что они ничего не делают. Поэтому мы можем определить логическую дверь как расширение SimpleDoor
.
/**
* Дверь для подтверждения входа пользователя.
*/
public class LoginDoor extends SimpleDoor {
@Override
public boolean test() {
return condition;
}
@Override
public void onBlock() {
toask("Сначала вы должны войти!");
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )