我有一个让用户选择电话号码的 Activity 。当然,我希望我的类(class)记住所选联系人的 ID,因此我将其保存在类(class)字段中。然而,当方法 onActivityResult 返回时,我的类变量被重置。这是我正在尝试做的事情:
Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
...
public void onActivityResult(int reqCode, int resultCode, Intent intent){
super.onActivityResult(reqCode, resultCode, intent);
switch(reqCode){
case(PICK_CONTACT):
if(resultCode == Activity.RESULT_OK){
Uri contactData = intent.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if(c.moveToFirst()){
contactName = c.getString(c.getColumnIndexOrThrow(People.NAME));
contactId = c.getInt(c.getColumnIndexOrThrow(People._ID));
break;
当我在此方法中设置断点时,contactName 和 contactId 的值如我所料,但是一旦该方法返回,这些值就会以某种方式重置为其默认值。显然我遗漏了什么,但我不确定我做错了什么或忘记了什么。
谢谢!
伊娃
最佳答案
您的 Activity
可能已暂停并重新创建。
本质上,如果您使用 startActivityForResult
启动的 Intent 是资源密集型的,操作系统可能必须暂停您的 Activity 以释放资源。
因此它会尽可能地保存,然后从 Intent 返回以调用 onActivityResult
,它必须重新创建您的 Activity。在这种情况下,任何实例变量都将被重置。
您可以通过重启设备或使用 onSaveInstanceState
和 onRestoreInstanceState
来解决这个问题。
在这里阅读更多: Why oncreate method called after startActivityForResult?
关于android - onActivityResult 中设置的类变量在方法返回时重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075977/