Ответ 1
Вы добавили вызов setResult()
в свой класс MoodPicker?
До сих пор я успешно использовал функцию 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;
}
}
и ничего в моем файле журнала не написано (я, конечно же, проверял, что мой файл журнала работает правильно и дважды проверяет вывод вывода текста).
Есть ли что-то, что я забыл объявить в файле манифеста?
Спасибо заранее.
Вы добавили вызов setResult()
в свой класс MoodPicker?
У меня была такая же проблема и она была решена: Просто удалите
android:launchMode="singleInstance"
В моем случае я не понимал, что я вызывал startActivityForResult
из действия, у которого атрибут android:noHistory
установлен в true в манифесте. Поэтому onActivityResult
никогда не вызывался, поскольку больше не было экземпляра активности.
Если я читаю это право, весь указанный код должен находиться в "FriendPicker". В "MoodPicker" вам нужен такой код, который устанавливает результат и заканчивается сам:
this.setResult(SUCCESS_RETURN_CODE, i);
this.finish();
Сообщите мне, если это поможет...
В API андроида есть ошибка. В startActivityForResult (намерение, requestCode); Эта функция работает до тех пор, пока requestCode = 0. Однако если вы измените код запроса на ничего, кроме нуля, ApiDemos не сработает (и OnActivityResult не будет вызываться). Найдено здесь:
[ИЗМЕНИТЬ: ссылка удалена как переполнение группы google со спамом]
android:noHistory="true"
как
android:launchMode="singleInstance"
остановит onActivityResult результат приема.
Активность 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 не работает?
Ошибка, которую я сделал, заключалась в том, что после создания моего намерения я вызывал startActivity()
вместо startActivityForResult()
Иногда простые убивают вас:)