Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 反应导航-退出应用程序前创建确认屏幕_Android_React Native_React Navigation_React Navigation V5 - Fatal编程技术网

Android 反应导航-退出应用程序前创建确认屏幕

Android 反应导航-退出应用程序前创建确认屏幕,android,react-native,react-navigation,react-navigation-v5,Android,React Native,React Navigation,React Navigation V5,我使用的是react-native和react-navigation(v5),在Android上,后退按钮会弹出每个屏幕,直到没有更多屏幕,然后退出应用程序 我想阻止退出,并在退出应用程序之前用yes | no提示用户,但检查导航。状态或canGoBack在退出前没有指向任何关于最终屏幕的线索 BackHandler.addEventListener('hardwareBackPress', () => { const canGoBack = navigation.canGoBac

我使用的是
react-native
react-navigation
(v5),在Android上,后退按钮会弹出每个屏幕,直到没有更多屏幕,然后退出应用程序

我想阻止退出,并在退出应用程序之前用yes | no提示用户,但检查
导航。状态
canGoBack
在退出前没有指向任何关于最终屏幕的线索

BackHandler.addEventListener('hardwareBackPress', () => {
    const canGoBack = navigation.canGoBack(); // always false
    const isFocused = navigation.isFocused(); // always true

    // TODO: how to check if we're on last screen?
    // I need to pop until last screen and display confirmation alert
    // navigation.state is a whole bunch of whores with no reliable way to check for last screen (I tried the _index_ and _history_

    if ( canGoBack && isFocused ) {
        navigation.goBack(); // never goes here
        return true; // means handled, default behaviour of popping screen won't be executed
    }
    return false; // not handled, react-navigation will pop screens and when no more screens to pop, will exit app
    // return true; // if I return true, no screens will get popped, and no auto-exit app also, but I need the pop until last
}

有人知道为什么
navigation.canGoBack()
总是返回false,如果真的有办法检查后面还有多少屏幕吗?

在你的代码中,你说的是
canGoBack
总是返回
false
,在你的问题中,你说的是它总是返回
true
。你指的是哪一个?它应该只在第一个屏幕上返回
false
,否则返回
true
。不管屏幕如何,它总是返回false,很抱歉输入错误。在你的代码中,你说的是
canGoBack
总是返回
false
,在你的问题中,你说的是它总是返回
true
。你指的是哪一个?它应该只在第一个屏幕上返回
false
,否则返回
true
。不管屏幕如何,它总是返回false,很抱歉输入错误。。