2010-01-16 2 views
4

У меня есть действие, которое позволяет пользователю выбрать номер телефона. Естественно, я хотел бы, чтобы мой класс помнил идентификатор выбранного контакта, поэтому я сохраняю его в поле класса. Однако, когда метод onActivityResult возвращается, моя переменная класса сбрасывается. Вот то, что я пытаюсь сделать:Переменные класса, установленные в 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 являются, как я ожидал, но как только метод возвращает значения каким-то образом получить сбрасываются в их по умолчанию. Ясно, что я что-то упускаю, но я не уверен, что я делаю неправильно или забываю.

Спасибо!

Iva

+0

Хотите знать, если вы работаете в режиме разработки и, возможно, Rails будет перезаряжать ваше определение класса каждый раз? –

ответ

0

Не уверен, что если вы по-прежнему нужна помощь в этом. onActivityResult вызывается перед onResume, когда ваша активность перезапускается. Убедитесь, что вы не сбросите значения переменных в onResume.

Вы получите этот вызов непосредственно перед onResume(), когда ваша деятельность возобновляется.

http://developer.android.com/reference/android/app/Activity.html#onActivityResult(int, INT, android.content.Intent)

Смежные вопросы