Переход деятельности с использованием Intents? - PullRequest
0 голосов
/ 21 января 2012

Переход активности такой:

A -----------> B (startActivity)

B ----------> C (startActivityOnResult)

Когда я устанавливаю Result в Activity в C и выполняю финиш (), я перенаправляюсь на A?1011 *

Редактировать: A -------- B

startActivity(new intent(uri,Search.class)`

B -------- C

Intent intent = new Intent(this,ContactsPicker.class);
intent.putExtra("Mode", 2);
startActivityForResult(intent,ContactsPicker.RECENT_CONTACTS);

В активе C:

Intent returnIntent = new Intent();
returnIntent.putExtra("contactlist",str.toString());
setResult(RESULT_OK,returnIntent);  
finish();

1 Ответ

0 голосов
/ 22 января 2012
  1. используйте метод startActivityForResult() в родительской операции A при вызове операции B.
  2. переопределяет onStop() или onDestory() методы в ваших дочерних действиях B и C и устанавливает произвольный код результата, скажем '2'. Вы можете сделать это следующим образом:

    protected void onStop() {
      // TODO Auto-generated method stub
      setResult(2);
      super.onStop();
    }
    @Override
    protected void onDestroy() {
      // TODO Auto-generated method stub
      setResult(2);
      super.onDestroy();
    }
    
  3. переопределите метод onActivityResult() в ваших действиях A и B и завершите действия в соответствии с кодом результата. Вы можете сделать это следующим образом:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      if(resultCode==2){
      finish();
      }
    }
    

Это должно завершить все действия после завершения действия C.

...