Android getParent () имеет значение null, но parentActivityName установлено - PullRequest
0 голосов
/ 04 октября 2018

У меня есть дочернее действие, которое обновляет базу данных, что показано в таблице ниже в родительском действии.Когда родительское действие (Обновление) выполнено, коммит отправляется в базу данных, и данные будут обновлены.После этого я хотел бы закрыть «Обновление» и вернуться к отображению родительской активности.Это работает, но данные не обновляются.Я прочитал в Интернете, что существует простой способ воссоздания действия ..

public void relaxate ()

Заставьте эту активность воссоздать новый экземпляр.Это приводит, по сути, к тому же потоку, что и при создании действия из-за изменения конфигурации - текущий экземпляр проходит свой жизненный цикл до onDestroy (), а затем создается новый экземпляр.

Поэтому я вызываю UpdateActivity из DisplayActivity с помощью:

Intent intent = new Intent(app, UpdateActivity.class);
startActivity(intent);

И внутри обновления есть кнопка, которая выполняет:

getParent().recreate();
finish();

Однако getParent () возвращает ноль, и я получаюошибка.Почему это так?

У меня есть следующее в моем AndroidManifest.xml (Ofc. Больше, но не все в списке)

    <activity
        android:name=".SearchActivity"
        android:parentActivityName=".MainActivity"
        android:screenOrientation="portrait">
    </activity>

    <activity
        android:name=".DisplaySearchResultActivity"
        android:screenOrientation="landscape"
        android:parentActivityName=".SearchActivity">
    </activity>

    <activity
        android:name=".UpdateActivity"
        android:parentActivityName=".DisplaySearchResultActivity"
        android:screenOrientation="portrait">
    </activity>

Спасибо.

1 Ответ

0 голосов
/ 04 октября 2018

Вы думали начать свой UpdateActivity с startActivityForResult()?Вы можете прочитать об этом здесь: https://developer.android.com/training/basics/intents/result. С этим в вашем DisplayActivity вы можете реализовать функцию onActivityResult(), которая сама будет recreate().Это должно работать нормально.Вам не нужно будет звонить getParent()

getParent() В документации сказано: Return the parent activity if this view is an embedded child. Ваша деятельность не является встроенной дочерней.Это не часть ActivityGroups https://developer.android.com/reference/android/app/ActivityGroup.

...