当屏幕方向改变时如何处理getIntent()?

10
这感觉像是一个初学者问题,但在Android中,当方向改变时,Activity会被销毁并重新创建,并再次调用onCreate()。内部状态可以通过savedInstanceState包保存。至此一切顺利。
但在我的应用程序中,有一个活动通常通过startActivityForResult()从另一个活动调用,传递一堆参数。在onCreate()中,目标活动执行getIntent()来检索传入的数据。问题是当该活动在屏幕上并且我翻转方向时,它会崩溃。它在onCreate()代码中崩溃,在那里调用getIntent()。我认为这是因为在这种情况下,它是被系统而不是其他活动调用,所以没有任何东西可供“获取”。
如何正确处理?怎样告诉我什么时候由于方向更改而调用我的onCreate(),以便我不尝试调用getIntent()?还是我想错了?预先感谢您。
1个回答

9
您可以通过 getIntent() 方法获取的详细信息保存在 savedInstanceState 中。也就是说,在您的 onSaveInstanceState(Bundle) 中使用 getIntent() 存储您在 onCreate() 中使用的信息。当您的 activity 新创建时,在 onCreate(Bundle savedInstanceState) 方法中,bundle savedInstanceState 为 null。因此,您可以在 onCreate(Bundle savedInstanceState) 中进行检查条件,如果 Bundle savedInstanceState 为 null,则需要使用 getIntent() 获取数据,否则如果不为 null,则表示有一些方向更改,需要使用 savedInstanceState bundle 获取数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接