Chciałbym wiedzieć, czy jest możliwe, aby onActivityResult()
używać wewnątrz Fragmentu, a jeśli tak, to jak to działa, proszę wyjaśnić na przykładzie.Jak wywołać funkcję OnActivityResult wewnątrz Fragmentu i jak to działa?
Odpowiedz
nazwałbyś:
startActivityForResult(i, 1);
a następnie:
@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.
}
Tak można użyć OnActivityResult wewnątrz Fragment.like to
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
// perform your action here
}
teraz nazywasz onActivityResult jak ten
getActivity().startActivityForResult().
To jest złe. Nie musi wywoływać metody getActivity(). StartActivityForResult(), zamiast tego powinien po prostu wywoływać "startActivityForResult()", a następnie wywoływać w jego fragmencie "onActivityForResult()", nie byłoby problemu, ponieważ fragment może wywoływać te metody. – HaroldSer
użyć tego kodu w działalności.
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);
}
}
Zdecydowanie to zadziała, będzie działać tak samo jak w działaniach. Trzeba zadzwonić startActivityForResult(intent, requestCode);
i normalnie prowadzić
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
jeśli zadzwonisz startActivityForResult()
w fragmencie, wynik jest dostarczana do rodzica czynność.
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);//will deliver result to desired fragment.
}
Jak to działa
jeśli widzisz requestCode aktywności będzie jak 655545, teraz
super.onActivityResult() obliczy żądany fragment oraz kod żądania.
jeśli fragment w ViewPager wskaźnik żądanego fragmentu znalezionego
requestCode>>16
i requestCode znajduje przez requestCode&0xffff
.
jeśli zaczynasz aktywność od fragmentu, możesz użyć funkcji OnActivityResult w działaniu –
Tak, możesz. W fragmencie nadpisuj metdod onActivityResult i skomentuj super.onActivityResult i wykonaj to, co chcesz zrobić w tej metodzie. Jeśli nie rozumiesz, to daj mi znać. –
@RameshKumar czy możesz wyjaśnić mi na przykładzie. Picie dla mnie jest również zrozumiałe. –