Как я могу сделать несколько startActivityForResult для другой активности?

В моем MainActivity, я hava-код выглядит следующим образом:

public void toSecondActivity(View v){ if(condition1){ Intent it = new Intent(MainActitivy.this,SecondAcitivity.class); //put extra ...... startActivityForResult(it,1) } else if(condition2){ Intent it = new Intent(MainActitivy.this,SecondAcitivity.class); //put extra ...... startActivityForResult(it,2) } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == 3) { //do something } else if (resultCode == 4){ //do some other thing } } 

Затем в SecondActivity у меня есть этот код:

 public void returnToMainAcitivity(View v){ Intent it = getIntent(); //put extra ......... it.putExtra("ResourceID", mResourceId); setResult(3, it); finish(); } 

Мой вопрос: как установить результат на 4, если он запущен из условия2 с помощью одной и той же кнопки?

 public void returnToMainAcitivity(View v){ Intent it = getIntent(); //put extra ......... //Not 3 if started from condition2 //setResult(3, it); setResult(4, it); finish(); } 

Я довольно новичок в намерениях, поэтому, пожалуйста, научите меня, как решить эту проблему. Спасибо;)

Solutions Collecting From Web of "Как я могу сделать несколько startActivityForResult для другой активности?"

Если я правильно вас понял, попробуйте что-то подобное для ваших условий:

 Intent it = new Intent(MainActitivy.this,SecondAcitivity.class); it.PutExtra("StartedFromCondition",1) startActivityForResult(it,1) 

Просто прочитайте лишний и верните его по мере необходимости.

Следует отметить, что resultCode обычно равен -1 (RESULT_CANCELED) или 0 (RESULT_OK), которые указывают на отказ или успех. Вы должны действительно возвращать дополнительные данные в виде Дополнений в возвращенном намерении, если вы хотите передать данные из второго действия обратно в первый.

Это просто просто передать еще один параметр (inWhichCondition) в Intent &, когда вы отправляете результат обратно, просто поставьте переданное вами значение. Ниже приведен пример кода.

 public void toSecondActivity(View v){ if(condition1){ Intent it = new Intent(MainActitivy.this,SecondAcitivity.class); //put extra intent.PutExtra("inWhichCondition",3); startActivityForResult(it,1) } else if(condition2){ Intent it = new Intent(MainActitivy.this,SecondAcitivity.class); //put extra intent.PutExtra("inWhichCondition",4); startActivityForResult(it,2) } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == 3) { //do something } else if (resultCode == 4){ //do some other thing } } 

& Когда вы установите результат назад

 public void returnToMainAcitivity(View v){ Intent it = getIntent(); //put extra **setResult(inWhichCondition, it);** finish(); }