首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Android (react-native)上禁用设备后退按钮?

如何在Android (react-native)上禁用设备后退按钮?
EN

Stack Overflow用户
提问于 2018-12-13 17:03:13
回答 3查看 5.9K关注 0票数 3

如何使用React-Native禁用Android上的物理设备后退按钮?我不想为用户启用它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-19 10:25:28

在app.js中,当前打开的屏幕由应用程序启动时创建的侦听器跟踪。该应用程序的主要组件创建一个BackHandler侦听器,该侦听器根据当前打开的屏幕响应设备的后退按钮。

主要组件:

代码语言:javascript
运行
复制
componentDidMount() {
  BackHandler.addEventListener('hardwareBackPress', this.onBackPress);
}

componentWillUnmount() {
  BackHandler.removeEventListener('hardwareBackPress', this.onBackPress);
}

onBackPress = () => {
  if (this.props.currentScreen.name === 'app.main') {
     Alert.alert(
       'Confirm exit',
       'Do you want to exit App?',
       [
         {text: 'CANCEL', style: 'cancel'},
         {text: 'OK', onPress: () => {
           BackHandler.exitApp()
          }
        }
       ]
    );
  } else {
    Navigation.pop(this.props.currentScreen.id);
  }

  return true;
}

App.js

代码语言:javascript
运行
复制
//register to compomentDidApperaListener to keep track on which screen is currently open. The componentName and Id are stored in my redux store
Navigation.events().registerComponentDidAppearListener(({ componentId, componentName }) => {
  store.dispatch(updateCurrentScreen({'name': componentName, 'id': componentId}))
})
票数 1
EN

Stack Overflow用户

发布于 2018-12-18 17:13:04

到目前为止,在v2上还没有来自React Native Navigation的开箱即用支持。但是,您可以从React本机本身使用BackHandler。来处理它,并返回false来禁用它。

BackHandler上的文档

示例

代码语言:javascript
运行
复制
BackHandler.addEventListener('hardwareBackPress', function() {
  return false;
});
票数 4
EN

Stack Overflow用户

发布于 2018-12-13 17:07:55

在activity中,您可以覆盖onBackPressed()并注释对超类的调用。

代码语言:javascript
运行
复制
@Override
public void onBackPressed() {
  // super.onBackPressed(); comment this line to disable back button  press
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53758271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档