Подтвердить что ты не робот

OnActivityResult никогда не вызывал

До сих пор я успешно использовал функцию startActivity, и теперь, когда мне нужно использовать startActivityResult, у меня есть проблема.

При использовании этой функции активность, которую я ожидаю запустить, запускается правильно, но похоже, что функция onActivityResult никогда не вызывается.

Вот мой код в активности FriendPicker, чтобы активировать MoodPicker:

Intent intent = new Intent(FriendPicker.this, MoodPicker.class);
startActivityForResult(intent, 2);

И вот мой код в действии MoodPicker:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{                   
    super.onActivityResult(requestCode, resultCode, intent);

    Log.i("in OnActivityResult", "Activity Result");                        

    switch (requestCode)
    {
        case 2:             
            Log.i("in OnActivityResult", "Activity Resut 2");                

            break;
    }
}

и ничего в моем файле журнала не написано (я, конечно же, проверял, что мой файл журнала работает правильно и дважды проверяет вывод вывода текста).

Есть ли что-то, что я забыл объявить в файле манифеста?

Спасибо заранее.

4b9b3361

Ответ 1

Вы добавили вызов setResult() в свой класс MoodPicker?

Ответ 2

У меня была такая же проблема и она была решена: Просто удалите

android:launchMode="singleInstance"

Ответ 3

В моем случае я не понимал, что я вызывал startActivityForResult из действия, у которого атрибут android:noHistory установлен в true в манифесте. Поэтому onActivityResult никогда не вызывался, поскольку больше не было экземпляра активности.

Ответ 4

Если я читаю это право, весь указанный код должен находиться в "FriendPicker". В "MoodPicker" вам нужен такой код, который устанавливает результат и заканчивается сам:

this.setResult(SUCCESS_RETURN_CODE, i);
this.finish();

Сообщите мне, если это поможет...

Ответ 5

В API андроида есть ошибка. В startActivityForResult (намерение, requestCode); Эта функция работает до тех пор, пока requestCode = 0. Однако если вы измените код запроса на ничего, кроме нуля, ApiDemos не сработает (и OnActivityResult не будет вызываться). Найдено здесь:

[ИЗМЕНИТЬ: ссылка удалена как переполнение группы google со спамом]

Ответ 6

android:noHistory="true" 

как

android:launchMode="singleInstance"

остановит onActivityResult результат приема.

Ответ 7

Активность FriendPicker

Intent intent = new Intent(FriendPicker.this, MoodPicker.class);
startActivityForResult(intent, 2);


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{                   
    super.onActivityResult(requestCode, resultCode, intent);

    Log.i("in OnActivityResult", "Activity Result");                        

    switch (requestCode)
    {
        case 2:             
             if (resultCode == Activity.RESULT_OK) {     //optional   
            Log.i("in OnActivityResult", "Activity Resut 2");                
              }
            break;
    }
}

Класс MoodPicker

Intent intent = new Intent(MoodPicker.this, FriendPicker.class);
        setResult(Activity.RESULT_OK, intent);
finish();

У меня была такая же проблема, используя onActivityResult(); потому что я не понял, как это будет правильно применяться, здесь вы можете найти хорошее объяснение, как использовать onActivityResult onActivityResult не работает?

Ответ 8

Ошибка, которую я сделал, заключалась в том, что после создания моего намерения я вызывал startActivity() вместо startActivityForResult()

Иногда простые убивают вас:)