android - BackHandler 无法正常工作 React Native

标签 android reactjs react-native redux react-navigation

当用户在 Android 上按下后退按钮时,我正在尝试返回。

我在屏幕上添加了监听器,它在远程 Debug模式下接收事件。但是当我不进行远程调试时它不能正常工作。这真的很奇怪。

我将附上我编写的代码 fragment 。

//Navigator
const BoardNavigator = StackNavigator({
    Board: { screen: Board }
});

//Board Component
class Board extends Component {
    componentWillMount () {
        BackHandler.addEventListener('hardwareBackPress', this._onBackPressed);
    }

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

    _onBackPressed () {
        console.log('backPress');
        goBack(this.props.navigation);
        return true;
    }

    onNext() {
        this.props.navigation.navigate("Board", {content: ...});
    }
}

附加信息: 此 BoardNavigator 是 rootNavigator(StackNavigator) 的嵌套之一。

react :'16.0.0-alpha.12'

native react :“0.47.2”

最佳答案

我实际上使用了如下的后处理程序来控制后退按钮,只需立即按下 2 次即可关闭应用程序。

componentDidMount() {
this._backPress = 0;

BackHandler.addEventListener('backPress', () => {
  setTimeout(() => {
    this._backPress = 0;
  }, 3000);

  this._backPress += 1;
  if (this._backPress <= 1) {
    ToastAndroid.showWithGravity(strings.BACK_BUTTON_ALERT, ToastAndroid.SHORT, ToastAndroid.CENTER);
    return true;
  }
  return false;
});

关于android - BackHandler 无法正常工作 React Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46373770/

相关文章:

reactjs - 过滤 react native 数据

android - 基本的 react native 应用程序不显示任何文本,仅在模拟器上显示带有应用程序名称的白屏

android - 防止按返回按钮取消操作模式

android - 你能用字符串调用字符串资源吗?

android - 点击事件转移到下一个启动的Activity

javascript - 如何渲染重复的 React 元素?

css - 多行 FormInput 元素离开屏幕

android - 极慢的AVD完全分配资源

reactjs - 如何缓存 API 响应并稍后在 React 和 Redux 中使用它?

css - 在 webpack css loader 中使用外部样式和多个类名