我怎样才能在针对android的react-native中重新设置上一个活动?

jia*_*eng 5 react-native

我怎样才能在针对android的react-native中重新设置上一个活动?

我的想法是:

1在index.android.js中设置_navigate

// ???????
var _navigator;
BackAndroid.addEventListener('hardwareBackPress', function() {
    if (_navigator && _navigator.getCurrentRoutes().length > 1) {
        _navigator.pop();
        return true;
    }
    return false;
});
Run Code Online (Sandbox Code Playgroud)

2在RouteMapping中传递导航器:

RouteMapper: function(route, navigationOperations, onComponentRef) {
        _navigator = navigationOperations;
        if (route.name === 'detail') {
            // ?????
            return (
                <DetailScreen
                  navigator={navigationOperations}
                  question={route.question} />
            );
        } else if (route.name == 'front') {
            // ??
            return(
              <FrontScreen
                navigator={navigationOperations}
                />
            );

        }
    },
Run Code Online (Sandbox Code Playgroud)

3在列表视图中设置推送

gotoDetail: function(question: Object) {
    this.props.navigator.push({
        id: question.question_id,
        name: 'detail',
        question: question
    })
Run Code Online (Sandbox Code Playgroud)

但它不起作用.当我点击Android中的后退按钮时,它会跳出应用程序?

我怎样才能做到这一点?

或者任何人都能举一些例子?

小智 3

您需要将以下代码添加到<您的项目>/android/app/src/main/java/com/<您的项目>/MainActivity.java:

@Override
public void onBackPressed() {
    if (mReactInstanceManager != null) {
        mReactInstanceManager.onBackPressed();
    } else {
        super.onBackPressed();
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 React Native 0.12 创建的项目将正常运行。

有关更多信息,请参阅 Github 上的此问题https://github.com/facebook/react-native/issues/3223