2011-10-17 99 views
0

我有一个活动,允许用户选择一个联系人,并使用onActivityResult()返回结果。onActivityResult()从联系人选择器返回后是否未调用onRestoreInstanceState?

当从联系人选择器返回活动时,我试图从onRestoreInstanceState()中的某个包中提取某些内容。但onActivityResult被称为后OnRestore中不运行..

我log.e它来检查,看它是否是跑去它不是...

这里是我的OnRestore中

@Override 
    protected void onRestoreInstanceState(Bundle outState){ 
     super.onRestoreInstanceState(outState); 
     Log.e("SmsEditCreate", "Inside onRestore"); 
     mDbHelper.open(); 
     setRowIdFromIntent(); 
     populateField(); 
    } 

当返回onActivityResult()被调用时,onRestore不会被调用吗?

如果还有其他解决方法,请让我知道。

回答

2

onRestoreInstanceState仅在您的活动被销毁后创建时才会调用。开始另一项活动后可能会发生这种情况,但如果没有必要,Android会尽可能保持旧的活动。

如果您正在寻找合适的时间来完成您的工作,那么您的活动生命周期可能会对您有所用处。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+0

好的,所以到我的问题的第二部分。当我需要从onResume()中的Bundle中提取信息时,我该如何解决这个问题? –

+0

嗯,我不能真正回答你的问题,因为你没有发布你想要做的事情。不过,我可以说,您的Activity的实例将与启动旧活动之前使用的实例相同。因此,您可以在您的Activity类中使用您试图在onResume()中使用onSaveInstanceState持久化的任何字段。换句话说,如果将字段mRowId设置为您正在使用的rowId,则可以直接在您的onResume中使用mRowId。在你的onRestoreInstanceState中,你也可以从bundle中设置mRowId。 –

相关问题