我的情况是:
将Android活动视为screen A
,并将react-navigation
堆栈当前存储在screen B
中。
screen B
使用screen A
调用NativeModules.ScreenA.startActivityForResult()
,我可以await
将screen A
发送回screen B
的任何结果。
但是我的应用返回到根屏幕(“反应导航堆栈”的第一个屏幕),而不是再次出现screen B
。
我在startActivityFoResult()
上实现onBackPressed()
和screen A
@ReactMethod
public void startActivityForResult(ReadableMap data, Promise promise) {
Activity activity = getReactApplicationContext().getCurrentActivity();
Intent intent = new Intent(getReactApplicationContext(), ScreenAView.class);
intent.putExtras(Arguments.toBundle(data));
mPlayerPromise = promise;
activity.startActivityForResult(intent, REQUEST_CODE);
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = getIntent();
intent.putExtra("data", data);
setResult(RESULT_OK, intent);
finish(); // destroy Intent and back to React Native
}
这就是我解析screen A
中来自screen B
的数据的方式。
try {
const data = await NativeModules.ScreenA.startActivityForResult();
// use data coming from screen A here
} catch (error) {
// catch errors from screen A activity
}
我根据react-native文档正确设置了Module,Package和View。但是,当我从native -> react-native
返回时,我不知道如何获得正确的反应导航堆栈。
我错过了什么吗?或者这是怎么回事?