Android getParent()为null但已设置parentActivityName

时间:2018-10-04 19:23:28

标签: android activity-stack

我有一个更新数据库的子活动,该活动显示在父活动的下表中。父活动(更新)完成后,提交将发送到数据库,并且数据将被更新。之后,我想关闭“更新”并返回到我的父活动显示。这可以工作,但不会刷新数据。我在线阅读了一种简单的方法来重新创建活动。

  

public void recreate()

     

使用新的活动重新创建此活动   实例。这导致与   活动是由于配置更改而创建的-当前   实例将通过生命周期到达onDestroy()和一个新实例   然后在其后创建实例。

因此我使用以下命令从DisplayActivity调用UpdateActivity:

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

在“更新”中,有一个按钮可以执行以下操作:

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

但是getParent()返回null,但出现错误。为什么会这样?

我的AndroidManifest.xml中包含以下内容(更多信息,但未列出所有内容)

    <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 :(得分:1)

您是否考虑过以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的一部分。