【问题标题】:Swipe transition to go back works, but pressing the back button does not go back滑动过渡以返回有效,但按下返回按钮不会返回
【发布时间】:2020-05-18 21:23:22
【问题描述】:

在滑动时,返回的过渡有效,但是当我按下返回按钮时,过渡在 Android 操作系统中不起作用。

我用过 react-navigation v4 https://reactnavigation.org/docs/en/getting-started.html

export const navStack = (screenName) => createStackNavigator({
    Screen1,
    Screen2,
    Screen3
}, {
    initialRouteName: screenName,
    defaultNavigationOptions: {
        ...TransitionPresets.SlideFromRightIOS,
        headerStyleInterpolator: HeaderStyleInterpolators.forUIKit,
        headerShown: false,
        gestureEnabled: true
    }
});
const AppTabNavigator = createBottomTabNavigator({
    TabScreen1: {
        screen: navStack("Screen1")
    },
    TabScreen2: {
        screen: AnyScreen
    },
}, {
    initialRouteName: "TabScreen1",
    backBehavior: "none",
    tabBarOptions: {
        showLabel: false
    }
});
export const App = createAppContainer(AppTabNavigator);

【问题讨论】:

    标签: java android react-native react-navigation androidx


    【解决方案1】:

    嗨,我想是因为你设置了backBehavior: "none"
    只需尝试将其设置为 backBehavior: "initialRoute"backBehavior: "history" 它会根据您的要求将您重定向回或初始阶段尝试

    【讨论】:

    • 感谢您的回答。我认为 backBehavior 用于点击导航。但是我仍然尝试更改为 backBehavior:“initialRoute”或 backBehavior:“history”,它不起作用。我想在 createStackNavigator 中查看导航
    【解决方案2】:

    你可以做类似 react 导航库提供的 goback 方法。您可以创建自定义后退按钮,并在单击它时使用navigate.goBack() 函数。

    【讨论】:

    • 我尝试在组件 BackHandler.addEventListener("hardwareBackPress", this.onBack) source 中使用,但它不适合我。
    • 将 browserRouter 作为 props 传递给您的组件并执行 this.props.navigation.goBack() 函数,您不必创建事件侦听器。请查看方法:reactnavigation.org/docs/en/…
    • 不明白你的意思。对于一个简单的例子,我会印象深刻:)
    • 当你点击一个按钮时如何转到另一个屏幕?
    • 也许我们彼此不理解,我需要一个事件来在 Android 操作系统上按下系统按钮,而不是自定义返回按钮
    猜你喜欢
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多