Android后退按钮处理程序可响应本机路由器流量

时间:2018-06-23 04:39:43

标签: android react-native back-button react-native-router-flux

我有一个React Native应用程序,其中使用了react native路由器流量,我的场景就这样

  1. 飞溅
  2. 登录
  3. 仪表板
  4. 单击“仪表盘”图标后,它将转到通知屏幕

最初,在加载应用程序后,一切都会顺利进行。但是,当我单击仪表板图标时,它将导航到“通知”屏幕,当我按Android后退按钮时,由于我已编写BackHandler并在其中编写了Actions.pop()

,它会转到“仪表板”屏幕。

现在在仪表板中,我已经编写了带有检查计数的BackHandler,即如果两次按下“后退”按钮并使其退出应用程序,但问题是,只有当我没有导航到“通知”屏幕时,它才起作用。通知屏幕,然后按返回按钮,它导航到仪表板,但是当我再次按仪表板上的返回按钮时,它只是使我导航到登录屏幕,然后从那里导航到启动屏幕。

我想要的是即使我导航到“通知”屏幕,然后按后退按钮,我也应该导航到仪表板,然后在仪表板上的后退按钮上单击(两次),它应该退出应用程序而不重定向到登录和启动屏幕。

我的代码就是通过这种方式显示在仪表板屏幕上的-

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}的方法以及其他方法。

1 个答案:

答案 0 :(得分:0)

您要做的第一件事是导航并清除启动画面和登录屏幕。因为当前正在发生的是弹出屏幕,并且启动和登录已经在堆栈中。其次,在仪表板中放置一个检查条件,如果routname是您的仪表板,则只有双出口条件应执行其余操作,否则它将不起作用。我认为它将起作用。