Я хочу знать, возможно ли в onActivityResult()
использовать внутри Fragment, и если да, то как это работает, пожалуйста, объясните с помощью примера.
Как я могу вызвать OnActivityResult внутри фрагмента и как он работает?
Ответ 1
Вы бы назвали:
startActivityForResult(i, 1);
а затем:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data); comment this unless you want to pass your result to the activity.
}
Ответ 2
Используйте этот код в активности.
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag(childTag);
if (fragment != null) {
fragment.onActivityResult(requestCode, resultCode, intent);
}
}
Ответ 3
Определенно это сработает, оно будет работать так же, как в действиях. Вы звоните startActivityForResult(intent, requestCode);
и обычно получают результат в
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
Ответ 4
Да, вы можете использовать OnActivityResult
внутри Fragment. Вот так
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//super.onActivityResult(requestCode, resultCode, intent);
// perform your action here
}
EDIT
Для получения дополнительной информации проверьте этот старый вопрос
Ответ 5
если вы вызываете startActivityForResult()
в фрагменте, результат доставляется в родительскую активность.
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);//will deliver result to desired fragment.
}
Как работает
если вы видите requestCode в действии, это будет как 655545, теперь
super.onActivityResult() будет вычислять желаемый фрагмент и код запроса.
если ваш фрагмент в списке нужного фрагмента ViewPager найден с помощью
requestCode>>16
и requestCode находится requestCode&0xffff
.
Ответ 6
Лучший ответ здесь, пожалуйста... https://www.codexpedia.com/android/onactivityresult-not-called-in-nested-fragment/