10

这感觉像是一个菜鸟问题,但在 Android 中,当方向改变时,Activity 被销毁并重新创建,并且onCreate()被重新调用。内部状态可以通过 savedInstanceState 包保存。到现在为止还挺好。

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

处理这个问题的正确方法是什么?如何判断我的onCreate()何时由于方向变化而被调用,所以我不尝试调用getIntent()?还是我只是在想这个错误?先感谢您。

4

1 回答 1

8

您可以将通过getIntent()方法获取的详细信息保存在 savedInstanceState 中。这意味着,在您的onSaveInstanceState(Bundle)商店中,您在onCreate()使用getIntent(). 当您activity新创建时,在该onCreate(Bundle savedInstanceState)方法中,捆绑包savedInstanceState为空。因此,您可以在您的onCreate(Bundle savedInstanceState), 如果 BundlesavedInstanceState为 null 则意味着您需要使用getIntent()else 获取数据,如果它不为 null 则意味着有一些方向更改,您需要使用savedInstanceStatebundle 获取数据。

于 2013-06-24T18:10:49.110 回答