方向更改时的getIntent() - 如何处理?

时间:2013-06-24 17:59:20

标签: android

这感觉就像一个菜鸟问题,但在Android中,当方向改变时,活动被销毁并重新创建, onCreate()被重新调用。可以通过savedInstanceState包保存内部状态。到目前为止一切都很好。

但在我的应用程序中,我有一个活动,通常通过 startActivityForResult()从另一个活动调用,它传递了一堆参数。在 onCreate()中,目标活动执行 getIntent()以检索传入的数据。问题是,当该活动在屏幕上并且我翻转方向时它会崩溃。它在 onCreate()代码中崩溃,它调用 getIntent()。我认为它崩溃了,因为没有什么可以“获取”,因为在这种情况下,它是从系统调用而不是从其他活动调用。

处理此问题的正确方法是什么?如何判断我的 onCreate()是否由于方向更改而被调用,所以我不会尝试调用 getIntent()?或者我只是想到这个错误?提前谢谢。

1 个答案:

答案 0 :(得分:8)

您可以在savedInstanceState中保存getIntent()方法获得的详细信息。这意味着,在onSaveInstanceState(Bundle)商店中使用onCreate()存储您在getIntent()中使用的信息。当您新创建activity时,在onCreate(Bundle savedInstanceState)方法中,包savedInstanceState为空。因此,如果Bundle onCreate(Bundle savedInstanceState)为null,那么您可以在savedInstanceState中创建检查条件,这意味着您需要使用getIntent()来获取数据,如果它不为null,则表示存在一些oritentation更改,您需要使用savedInstanceState捆绑包获取数据。