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

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

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

什么是正确的方法来处理这个? 我怎么知道当我的onCreate()被调用时,由于方向的改变,所以我不试图调用getIntent() ? 还是我只是想着这个错误? 先谢谢你。

Solutions Collecting From Web of "getIntent()方向更改时 – 如何处理?"

您可以将getIntent()方法获得的详细信息保存到savedInstanceState中。 这意味着,在onSaveInstanceState(Bundle) onCreate()使用getIntent()存储您在onCreate()使用的信息。 在新创buildactivity ,在onCreate(Bundle savedInstanceState)方法中,包savedInstanceState为null。 所以你可以在你的onCreate(Bundle savedInstanceState)做一个检查条件,如果Bundle savedInstanceState为null,这意味着你需要使用getIntent()来获取数据,否则如果它不为null意味着有一些oritentation的变化,你需要得到使用savedInstanceState包的数据。