0

我在堆栈导航器返回导航中遇到了一个奇怪的行为。我有一个带有一些图标的应用程序主页,单击图标会打开一个新页面。里面还有页面。Home->Icon1->Page1->Page2->Page3 像这样。

在主屏幕上,我添加了一个 BackHandler 来询问是否退出应用程序,而不是直接退出应用程序。每当我从其他屏幕返回主屏幕时,它都不会询问该选项。它仅在渲染发生并且返回导航时才有效,我认为渲染不会再次发生。如果我在内页上添加 BackHandler,它们根本不起作用。所以我很困惑如何使用 StackNavigator 处理后退导航。

处理主屏幕上返回 android 按钮的代码。在导航到其他屏幕时删除侦听器。如果应用程序打开并且我按下后退按钮,则调用此处理程序,但是当我导航到其他屏幕并返回主页时,不会调用此处理程序并且应用程序直接退出而不显示提示。

    componentDidMount() {
        SplashScreen.close({animationType: SplashScreen.animationType.fade, duration: 2000, delay: 500})
        if (Platform.OS == "android") {
          BackHandler.addEventListener('hardwareBackPress', this.handleBackButton);
        }
      }

  handleBackButton = () => {
    var route = this.props.navigation.state.routeName;
    if(route == 'LoginPage')
    {
    Alert.alert('Exit App', 'Exiting the application?', [
      {
        text: 'No',
        onPress: () => console.log('Cancel Pressed'),
        style: 'cancel'
      }, {
        text: 'Yes',
        onPress: () => BackHandler.exitApp()
      }
    ], {cancelable: false})
  }
    return true;
  }

<TouchableOpacity
                activeOpacity={.5}
                onPress={() => {
                BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton);
                navigate("LiveTV")
              }}>
4

0 回答 0