FirstActivity.Java
есть FragmentA.Java
какие звонки startActivityForResult()
.
SecondActivity.Java
звоните, finish()
но onActivityResult
никогда не звоните, что написано в FragmentA.Java
.
FragmentA.Java
код:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// some code
Intent i = new Intent(getActivity(), SecondActivity.class);
i.putExtra("helloString", helloString);
getActivity().startActivityForResult(i, 1);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
getActivity();
if(requestCode == 1 && resultCode == Activity.RESULT_OK) {
//some code
}
}
SecondActivity.Java
код:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//some code
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
}
Я пытался отладить код, но мне onAcitvityResult()
никогда не звонили.
android
android-fragmentactivity
Г-н Рошан Павар
источник
источник
Ответы:
Вы должны написать
onActivityResult()
в вашемFirstActivity.Java
следующемТак что это будет называть ваш фрагмент
onActivityResult()
Изменить: решение заключается в замене
getActivity().startActivityForResult(i, 1);
наstartActivityForResult(i, 1);
источник
onActivityresult()
изFirstAcivity.Java
вызывается иonActivityresult()
изFragmentA.Java
никогда не дозвонились. Пожалуйста помоги.startActivityForResult
вместоgetActivity().start...
? Потому что, насколько я вижу, вы переопределяете определениеonActivityResult
своим собственным определением в Деятельности (т.е. это ведет себя точно так же, как если бы переопределение в ответе не существовало).Ответ Кевина работает, но с этим решением сложно играть с данными.
Лучшее решение - не начинать
startActivityForResult()
на уровне активности.в вашем случае не звоните
getActivity().startActivityForResult(i, 1);
Вместо этого просто используйте,
startActivityForResult()
и это будет работать отлично! :)источник
Вы должны написать onActivityResult () в вашем FirstActivity.Java следующим образом
Это вызовет метод фрагментов onActivityResult в FirstActivity.java.
источник
Фрагмент уже есть
startActivityForResult
, который будет вызыватьonActivityResult
фрагмент, если вы используете его, а неgetActivity()
...источник
Самое важное, чего здесь не хватает, так это ... StartMode of FirstActivity должен быть singleTop. Если это singleInstance, onActivityResult в FragmentA будет вызываться сразу после вызова метода startActivityForResult. Таким образом, он не будет ждать вызова метода finish () в SecondActivity.
Пройдите следующие шаги: после долгого исследования это определенно сработает, как и у меня.
В файле AndroidManifest.xml сделайте launchMode для FirstActivity.Java как singleTop.
В FirstActivity.java переопределите метод onActivityResult. Как это будет вызывать onActivityResult FragmentA.
В FragmentA.Java переопределите метод onActivityResult
Позвонить
startActivityForResult(intent, HOMEWORK_POST_ACTIVITY);
с FragmentA.JavaВызов
finish();
метода в SecondActivity.javaНадеюсь, это сработает.
источник
Мы могли бы позвонить
startActivityForResult()
прямо из фрагмента, поэтому вы должны звонитьthis.startActivityForResult(i, 1);
вместоgetActivity().startActivityForResult(i, 1);
Активность отправит результат активности на ваш фрагмент.
источник
Пусть уже поздно для ответа. Но будет полезно для всех.
В моем случае хотите вызвать действие из фрагмента и setResult обратно из фрагмента.
Я использовал getContext из Fragment Like.
И установить результат из фрагмента
Теперь получаем результат для фрагментирования с
источник
onActivityResult () из MAinActivity будет вызывать, onActivityResult () из Fragement не будет вызывать, потому что фрагмент помещается в Activity, поэтому, очевидно, он возвращается к MainActivity
источник
Не вызывайте
finish()
вonCreate()
методе , то он работает отлично.источник
позвоните
onActivityresult()
в ParentActivity.источник