2013-02-21 2 views
6

Интересно, можно ли обрабатывать данные, например. активность 2 и активность 3 в действии 1, которые имеют один onActivityResult(), или мне нужен один метод для каждого вида деятельности, который возвращает данные?Обработать данные из нескольких действий в одном onActivityResult()?

Деятельность 1 является основной деятельностью для применения.

активность 1:

// Handle return value from activity 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == Activity.RESULT_OK) { 
     String imageId = data.getExtras().getString("imageId"); 

     // Do something if data return from activity 2 ?? 

     // Do something if data return from activity 3 ?? 
    } 
} 

активность 2

Intent intent = new Intent(); 
intent.putExtra("imageId", imagePath); 
setResult(RESULT_OK, intent); 
finish(); 

активность 3

Intent intent = new Intent(); 
intent.putExtra("contactId", data); 
setResult(RESULT_OK, intent); 
finish(); 
+1

вот что requestCode для. – njzk2

ответ

7

набор requestCode в вашем startActivityForResult для деятельности 1:

вызывающему деятельности 2

Intent intent = new Intent(this, Activity2.class); 
startActivityForResult(intent,10); 

вызова активности 3

Intent intent = new Intent(this, Activity3.class); 
startActivityForResult(intent,11); 

Теперь, когда вы пришли к onActivityResult проверки, что requestCode

как:

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 

     super.onActivityResult(requestCode, resultCode, data); 

     switch (requestCode) { 

      case (10): 
      { 
      // do this if request code is 10. 
      } 
      break; 

      case (11): 
      { 
      // do this if request code is 11. 
      } 
      break; 
    } 
+0

Является super.onActivityResult (requestCode, resultCode, data); необходимо? –

+0

Производные классы должны обратиться к реализации этого класса суперкласса. Если они этого не сделают, будет выбрано исключение. – KDeogharkar

+0

В целом (не специально для Android-плееров), когда вы выходите, вы должны обратиться к методам суперкласса, если не знаете, что не должны. Это решение, которое должно быть в каждом конкретном случае, но по умолчанию (я бы сказал) было бы так, что вы это сделаете. – KDeogharkar

6

No confusion check result code and request code ..

Пример:

private static final int TWO = 2; 
private static final int THREE = 3; 

startActivityForResult(new Intent(this,Activity2.class),TWO); // one for Activity 2 
startActivityForResult(new Intent(this,Activity3.class),THREE); 

и

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == Activity.RESULT_OK) { 
     if(requestCode == TWO) { 
      // Activity two stuff 
     } else if(requestCode == THREE) { 
      // Activity three stuff 
     } 
    } 
} 
Смежные вопросы