代码之家  ›  专栏  ›  技术社区  ›  Morton

Backhandler.RemoveEventListener不工作

  •  0
  • Morton  · 技术社区  · 7 年前

    我用 BackHandler.exitApp(); 在我的第一个屏幕中,但当我导航到另一个屏幕并单击android后退按钮时,它仍然会退出应用程序。

    我已经用过 bind 在我的构造器中,所以我不明白为什么 removeEventListener 不起作用。

    任何帮助都将不胜感激。提前谢谢。

    这是我的密码 BackHandler 就像这样:

      constructor(props) {
        super(props);
        this.backPressed = this.backPressed.bind(this);
      }
    
      componentWillMount() {
        if (Platform.OS === 'android') {
          BackHandler.addEventListener('hardwareBackPress', this.backPressed);
        }
      }
    
      componentWillUnmount() {
        if (Platform.OS === 'android') {
          BackHandler.removeEventListener('hardwareBackPress', this.backPressed);
        }
      }
    
      backPressed() {
        BackHandler.exitApp();
      }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   AS Mackay Kushan Gowda    6 年前

    我也有同样的问题,用这个代码解决了。希望这对你有帮助。

    goBack=()=>{
        this.props.navigation.goBack();
        return true;
    }
    componentWillMount() {
        BackHandler.addEventListener('hardwareBackPress', this.goBack);
    }
    componentWillUnmount() {
        BackHandler.removeEventListener('hardwareBackPress', this.goBack);
    }
    

    我将此添加到另一个不想退出的屏幕。