#blackberry #screen
#ежевика #экран
Вопрос:
ПРИВЕТ, я пытаюсь обнаружить повторный выход на экран после закрытия другого экрана, должно сработать при возврате с экранов моего приложения, а также при возврате с камеры устройства после съемки видео. В переопределенном методе onExposed() я могу обнаружить эту ситуацию, но он вызывается слишком много раз, а также вызывается при отображении диалогового окна (предупреждение). Есть ли лучший способ обнаружить возврат к экрану?
protected void onExposed() {
// return to screen detected
MainApp.addLog("onExposed");
}
Комментарии:
1. эй, как ты использовал этот метод Application.activate в классе?
Ответ №1:
возврат с камеры устройства после съемки видео
Проверьте приложение.активировать()
Система вызывает этот метод, когда выводит это приложение на передний план. По умолчанию этот метод ничего не делает. Переопределите этот метод для выполнения дополнительной обработки при выводе на передний план.
Комментарии:
1. спасибо, это работает, но мне также нужно вернуться к экрану внутри приложения
2. что касается «возврата к экрану», я просто не знаю, что предложить. для меня это звучит немного странно.
3. как использовать метод Application.activate() в файле класса? пожалуйста, предоставьте любой пример кода, если у вас есть
Ответ №2:
Если вы переопределите метод Screen.onUiEngineAttached (boolean), вы можете получать уведомления, когда экран подключается или отсоединяется от пользовательского интерфейса — в основном, когда он перемещается или извлекается из стека экранов.
Ответ №3:
Мне пришлось проделать нечто подобное, и я обнаружил, что это очень запутанно, потому что onExposed() может вызываться несколько раз в неопределенные сроки.
Чтобы обнаружить возврат с экрана B на экран A (главный экран), я использовал onUiEngineAttached экрана B (false), который вызывается при его извлечении.
Как использовать обратный вызов:
public interface Ievent {
public void backFromScreenBEvent();
}
Экран A:
public class ScreenA extends MainScreen implements Ievent
{
private ScreenB screenB;
// constructor
public ScreenA()
{
screenB = new ScreenB(this); // pass over Ievent
// ....
}
public void backFromScreenBEvent()
{
// screen B is returning, do something
}
Экран B:
public final class ScreenB extends MainScreen
{
private Ievent event;
// constructor
public ScreenB(final Ievent event)
{
this.event = event;
// ...
}
protected void onUiEngineAttached(boolean attached) {
super.onUiEngineAttached(attached);
if (!attached) {
event.backFromScreenBEvent(); // notify event
}
}