Обработка onActivityResult в приложении Android с несколькими действиями

В моем приложении для Android у меня есть основное действие, которое создает две другие вспомогательные действия посредством намерения. Теперь оба результата возвращаются к основному виду деятельности. В моей основной деятельности, как мне обрабатывать два «onActivityResult (int requestCode, int resultCode, Intent data)», поскольку он не может иметь два метода с одинаковым именем в данном классе. Надеюсь, мой вопрос ясен.

благодаря

Solutions Collecting From Web of "Обработка onActivityResult в приложении Android с несколькими действиями"

Вы меняете startActivityForResult который вы используете при вызове startActivityForResult .

EDIT: например, я использую это:

 startActivityForResult(i, App.REQUEST_ENABLE_BT); 

и это:

 startActivityForResult(i, App.MANUAL_INPUT); 

И затем вы фильтруете результаты следующим образом:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode == RESULT_OK){ switch(requestCode){ case App.REQUEST_ENABLE_BT: if(resultCode != RESULT_OK){ Toast.makeText(this, getString(R.string.label_bluetooth_disabled), Toast.LENGTH_LONG).show(); } break; case App.MANUAL_INPUT: break; } } 

Для этого requestCode . Итак, у вас будет такая настройка

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) case ACTIVITY1: if(resultCode == RESULT_OK) Toast.makeText(getApplicationContext(), "Activity 1 returned OK", Toast.LENGTH_LONG).show(); break; case ACTIVITY2: if(resultCode == RESULT_OK) Toast.makeText(getApplicationContext(), "Activity 2 returned OK", Toast.LENGTH_LONG).show(); break; } 

Где ACTIVITY1 и ACTIVITY2 являются константами в вашей Activity . Вы бы назвали их так:

startActivityForResult(activity1Intent, ACTIVITY1);

а также

startActivityForResult(activity2Intent, ACTIVITY2);

Можно вернуть любые данные из субзависимости в параметре цели результата:

Суб-деятельность:

 Intent intent = new Intent (); intent.putExtra ("string_1", "hello"); intent.putExtra ("string_2", "world"); intent.putExtra ("int_1", 1000); intent.putExtra ("long_1", 2000l); activity.setResult (Activity.RESULT_OK, intent); 

_

Родительская деятельность:

 @Override protected void onActivityResult (int requestCode, int resultCode, Intent intent) { if (resultCode == Activity.RESULT_OK) { String string_1 = intent.getStringExtra ("string_1", ""); String string_2 = intent.getStringExtra ("string_2", ""); int int_1 = intent.getIntExtra ("int_1", 0); long long_1 = intent.getLongExtra ("long_1", 0); } } 

Вы можете использовать swicth код запроса для другого результата

 public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case (1): { // do this if request code is 1. } break; case (2): { // do this if request code is 2. } break; }