作为RN编程的新手,我正在尝试处理android硬件按钮.但是在屏幕上按下它会导致同时进入上一个屏幕并关闭应用程序.
我的StackNavigator看起来像:
const navigatorApp = StackNavigator({
Screen1: { screen: Screen1 },
Screen2: { screen: Screen2 },
Screen3: { screen: Screen3 },
Screen4: { screen: Screen4 }
})
我试图对屏幕进行全局背压处理
class HandleHavigation extends React.Component {
componentwillMount () {
if (Platform.OS === 'android') return
BackHandler.addEventListener('hardwareBackPress', () => {
const { dispatch, nav } = this.props
if (nav.routes.length === 1 && (nav.routes[0].routeName === 'Screen1')) {
return false
}
dispatch({ type: 'Navigation/BACK' })
return true
})
}
componentwillUnmount () {
if (Platform.OS === 'android') return
BackHandler.removeEventListener('hardwareBackPress')
}
render () {
return <navigatorApp navigation={addNavigationHelpers({
dispatch: this.props.dispatch,
state: this.props.nav,
addListener: createReduxBoundAddListener('root')
})} />
}
}
const mapStatetoProps = state => ({ nav: state.reducer })
export default connect(mapStatetoProps)(HandleNavigation)
我也在其他问题解决方案中尝试了一些,但没有任何帮助阻止应用程序关闭.
我还考虑过在每个屏幕上实现backHandler.
在我的应用程序中,每个屏幕都包含函数onPress for top按钮.这就是我尝试使用Backhandler将此操作复制到硬件按钮的原因.但是所有我得到的 – 屏幕回来了,应用程序隐藏在同一时间.
在我的情况下是否有任何解决方案可以通过按hw backbutton来阻止关闭应用程序?
解决方法:
您可以使用BackHandler退出/关闭应用程序:
import { BackHandler } from 'react-native';
BackHandler.exitApp();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。