onActivityResult (...) не вызывается - PullRequest
0 голосов
/ 30 марта 2012

Проблема: у меня есть 4 упражнения A, B, C и D.

A - звонки -> B - звонки -> C

вызов новой активности выполняется с помощью startActivityForResult (..., ...)

Теперь моя проблема в том, что если я просто вызываю Finish для действия C, то onActivityResult (...) вызывается, как и ожидалось. Но я хочу закончить C и startActivity (D, ...);

// Код из C, где я вызываю finish ().

public void onSettingsClick(View v) {
    System.out.println("My Parent ====== "+getParent());
    if (getParent() == null) {
        setResult(Activity.RESULT_CANCELED, new Intent());
    } else {
        getParent().setResult(Activity.RESULT_CANCELED,new Intent());
    }
     finish();
     StartActivityUtil.launchSettings(this);// call to Activity D is done here
}

Плз Помогите, попробовал другой соль. но не повезло: (

Также я всегда получаю getParent () = null

Ответы [ 3 ]

1 голос
/ 31 марта 2012

Необходимо выполнить, Finish и startActivity являются асинхронизированными методами. Это означает, что вызов этих методов не означает немедленного вызова finish, а затем управление переходит в startActivity, эти команды добавляются в очередь и как система, запустит действие D, не возвращая результаты родительскому действию, чтобы избавиться от этой ситуации, сначала завершить действие C, а в onActivityResult на B запустить действие D в соответствии с условием

1 голос
/ 30 марта 2012

Вы должны запуститьActivityForResult (D) и завершить C в onActivityResult (и, необязательно, передать результат из D в C)

0 голосов
/ 30 марта 2012
public void onSettingsClick(View v) {
    System.out.println("My Parent ====== "+getParent());
    if (getParent() == null) {
        setResult(Activity.RESULT_CANCELED, new Intent());
    } else {
        getParent().setResult(Activity.RESULT_CANCELED,new Intent());
    }

    // just toggle these 2 lines. is it works?
    StartActivityUtil.launchSettings(this);// call to Activity D is done here
    finish();
}
...