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