gpt4 book ai didi

android - 处理 BackHandler

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:32 24 4
gpt4 key购买 nike

作为 RN 编程的新手,我正在尝试处理 android 硬件按钮。但是在屏幕上按下它会导致同时转到上一个屏幕并关闭应用程序。我的 StackNavigator 看起来像:

const navigatorApp = StackNavigator({
Screen1: { screen: Screen1 },
Screen2: { screen: Screen2 },
Screen3: { screen: Screen3 },
Screen4: { screen: Screen4 }
})

我试图为像这样的屏幕做一个全局的 backpress 处理

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 功能。这就是为什么我尝试使用 Backhandler 将此操作复制到硬件按钮。但我得到的只是 - 屏幕返回,应用程序同时隐藏。

在我的情况下,是否有任何解决方案可以防止按硬件后退按钮关闭应用程序?

最佳答案

您可以使用 BackHandler退出/关闭应用程序:

import { BackHandler } from 'react-native';

BackHandler.exitApp();

关于android - 处理 BackHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com