Мой сценарий:
Рассматривайте активность 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
}
У меня есть модуль, пакет и вид, настроенные правильно в соответствии с исходной документацией. Но я не знаю, как получить правильный стек реагирующей навигации, когда возвращаюсь с native -> react-native
.
Я что-то упустил или это так работает?