Android后退按钮处理程序反应本机路由器通量
Posted
技术标签:
【中文标题】Android后退按钮处理程序反应本机路由器通量【英文标题】:Android back button handler react native router flux 【发布时间】:2018-12-02 12:37:18 【问题描述】:我有一个 react native 应用程序,我在其中使用了 react native routerflux,我的场景是这样的
-
飞溅
登录
仪表板
点击仪表板图标会转到通知屏幕
最初加载应用程序时,一切都很顺利。但是,当我单击仪表板图标时,它会导航到通知屏幕,当我按下 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 和其他几种方法。
【问题讨论】:
【参考方案1】:您要做的第一件事是导航并清除启动画面和登录屏幕。因为目前正在发生的是您的屏幕被弹出并且启动和登录已经在堆栈中。其次,在仪表板中放置一个检查条件,如果 routname 是您的仪表板,那么只有双退出条件应该执行 rest 它不应该工作。我认为它会起作用。
【讨论】:
好的,将尝试使用 Action.reset("Dashboard") 重置堆栈,但是如何检查当前场景名称?我已经尝试过 Actions.currentScene 但它不起作用。 如果你正在使用 redux,请检查你的 props 你会在某处获得navigation.routename 可能已经晚了,但如果您使用的是磁通电流场景,则可以通过:Actions.currentScene以上是关于Android后退按钮处理程序反应本机路由器通量的主要内容,如果未能解决你的问题,请参考以下文章
如何在主页中打开后退按钮 android 以退出应用程序并关闭反应本机导航侧菜单
反应本机路由器通量:TypeError:未定义不是函数(评估'addListener')
如何处理后退按钮android以退出应用程序并在首页中打开时关闭本机导航侧菜单