Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Обработчик кнопки возврата Android реагирует на поток маршрутизатора

Автор вопроса: Krunal PanchalОтветов: 1

У меня есть одно собственное приложение для реагирования, в котором я использовал поток реагирования на собственный маршрутизатор, моя сцена падает таким образом

  1. Всплеск
  2. Авторизоваться
  3. Щиток приборов
  4. При щелчке по значку панели инструментов открывается экран уведомлений.

Первоначально, когда приложение загружено, все идет гладко. Но когда я нажимаю значок панели инструментов, он переходит на экран уведомлений, а когда я нажимаю кнопку возврата Android, он переходит на экран панели инструментов, поскольку я написал BackHandler и в котором я написал Actions.pop ()

Теперь на панели инструментов я написал BackHandler с проверочным счетчиком, т.е. если кнопка "Назад" нажата два раза и выйдет из приложения, но проблема в том, что он работает только в том случае, если я не перешел на экран уведомлений, когда я перехожу на экран уведомлений и затем нажмите кнопку "Назад", он перейдет на панель управления, но когда я снова нажимаю кнопку "Назад" на панели управления, я просто перехожу на экран входа в систему, а оттуда - на экран-заставку.

Я хочу, чтобы даже если я перешел на экран уведомлений и нажал кнопку "Назад", я должен перейти на панель управления и нажать кнопку "Назад" на панели управления (2 раза), он должен выйти из приложения без перенаправления на экран входа и заставки.

Мой код для экрана панели инструментов -

constructor(props) {
    super(props);
    this.backCount = 0;
    this.onHandleBackButton = this.handleBackButton.bind(this);


}
async componentWillMount() {

    BackHandler.addEventListener('hardwareBackPress', this.onHandleBackButton);

}
handleBackButton() {
    console.log("back button - dashboard")

    if (this.backCount == 1) {
        BackHandler.exitApp();
        this.backCount = 2;
        return; // exit
    }
    else if (this.backCount == 0) {

        Toast.show("Press again to exit", Toast.SHORT);
        this.backCount++;

        setTimeout(() => {
            if (this.backCount != 2)
                this.backCount = 0;
        }, 2000)

        return true;
    }
}

Код для экрана уведомлений -

constructor(props) {
    super(props);
    this.onHandleBackButton = this.handleBackButton.bind(this);

}
componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.onHandleBackButton);

}
handleBackButton() {


    Actions.pop();
   return true;
}

Я пробовал несколько способов с type = {ActionConst.RESET} и другими.

react-nativeandroidback-buttonreact-native-router-flux

Ответы

Ответ 1 · Adnan ali

Первое, что вам нужно сделать, это переместиться и очистить заставку и экран входа в систему. Потому что в настоящее время происходит то, что ваши экраны всплывают, а заставка и логин уже находятся в стеке. И, во-вторых, поставьте условие проверки на панели инструментов, что если имя маршрута - это ваша панель, тогда только условие двойного выхода должно выполнять rest, оно не должно работать. Думаю, сработает.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы