android关闭硬件,React-Native BackHandler总是关闭Android中的应用程序(硬件背面)

我正在使用redux v5.0.5和react-navigation v1.0.0-beta.11来构建一个应用程序,使用react-native v0.44.0。路由使用嵌套的导航器,一个主要的StackNavigator和DrawerNavigator完成。

我正在处理导航缩减器中的所有导航事件,也使用BackHandler在Android上按下硬件。现在到了怪异的一部分(对我来说),我已经实现了BackHandler事件处理程序,如下所示:React-Native BackHandler总是关闭Android中的应用程序(硬件背面)

import { BackHandler, Modal, View } from 'react-native';

import { NavigationActions } from 'react-navigation';

import { HARDWARE_BACK_PRESS } from '../helpers/NavTypes';

constructor(props) {

super(props);

this.handleBack = this.handleBack.bind(this);

}

componentWillMount() {

BackHandler.addEventListener(HARDWARE_BACK_PRESS, this.handleBack);

}

componentWillUnmount() {

BackHandler.removeEventListener(HARDWARE_BACK_PRESS, this.handleBack);

}

handleBack() {

const navAction = NavigationActions.back();

this.props.navigation.dispatch(navAction);

return true;

}

在我的导航减速器我处理Navigation/BACK动作类型,并跟踪我的状态。现在,当我按下我的Android设备或模拟器上的硬件返回按钮时,我可以看到redux-logger和React Native调试器的正确调度导航操作并显示上一个显示的屏幕,但应用程序仍然会关闭。这种情况也时我改变handleBack方法是这样的:

handleBack() {

return true;

}

每个硬件后退按钮被按下时,该应用程序仍然关闭。我在node_modules/react-native/Libraries/Utilities/BackHandler.android.js中做了一些步调试,在RCTDeviceEventEmitter.addListener里面我可以看到我的事件监听器已经注册,并且invokeDefault在循环中被设置为true。 addListener已退出,但App仍然关闭。有没有人知道是否有某些点的反应 - 导航和redux覆盖硬件后退按钮的行为,我不知道的顶级?

我已经建立了第二个普通RN项目,没有react-navigation和redux,实现了相同的BackHandler事件监听器(同样返回true),并且应用程序不会关闭。所以,现在这让我有些困惑。

2017-09-27

nils

+0

我也面临同样的问题,它为你工作? –

+0

@ Anjana-Systematix在这个项目中,我们更新了一个更新的'react-native','redux'和'react-navigation'版本,现在一切正常。但是我已经创建了该项目的一个分支,其中存在问题仍然存在的旧模块,就我的业余时间而言,我试图弄清楚该实现有什么问题。 –

+0

我的问题通过解决方案给出的解决方案https://github.com/facebook/react-native/issues/15497由Victoriayangx –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值