Mam kilka Fragmentów z niestandardowymi ListViews. Używają mojego niestandardowego ListAdaptera, w którym obsługuję kliknięcia na elementach listy. Muszę rozpocząć kolejną aktywność od tego OnClickListener i odzyskać trochę informacji do Fragmentu. Próbuję użyć tego samego, ale DataFillerActivity zwraca wynik do MainActivity, a nie do Fragment. jaki jest najlepszy sposób rozwiązania tego problemu? DziękiJak uruchomićAktywnośćForResult z Adaptera, aby uzyskać powrót do Fragmentu
Odpowiedz
Aby zaktualizować fragment, jedynym sposobem, powinny być nad działalnością . To dlatego, że Fragment ma być modułowy.
http://developer.android.com/training/basics/fragments/communicating.html
Jeśli rozpocząć acitivity do wyniku, wynik zostanie przekazany do działalności, która rozpoczęła żądania. Teraz możesz przekazać dane do żądanego fragmentu.
tylko przesłonić onActivityresult
w swojej klasie aktywny i przekazać wynik ten fragment z działalności można znaleźć fragment albo ale id tag
Jak pisze Steve, fragment powinien być modułowy. Oznacza to jednak, że komunikacja powinna być , a nie przejść przez jakąkolwiek czynność, ale pozostać w obrębie fragmentu.
Aby rozwiązać ten problem, należy się upewnić, że numer ListAdapter
zawiera odniesienie do fragmentu i użyć fragment.startActivityForResult()
. Następnie wynik powróci do fragmentu onActivityResult()
.
Bądź onActivityResult metody w główny przedmiot jak ten
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data);
// Check if image is captured successfully
super.onActivityResult(requestCode, resultCode, data);
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
Będzie zdać kod wynikowy do swojej dziecięcej fragmentu.
Próbowałem, ale nie działa, nie jestem pewien, czy to z powodu błędu związanego z http://stackoverflow.com/questions/18271761/onactivityresult-gets-called-when-activity-starts-not-when-its-finished. Ale jeśli zadzwonię do innej czynności z mojego fragmentu, to działa. Dopiero gdy wywołanie funkcji startActivityForResult w obrębie ListView fragmentu zostanie wywołane, funkcja onActivityResult tego fragmentu zostanie wywołana natychmiast po rozpoczęciu zamierzonego działania. – teapeng
Rozwiązałem problem po usunięciu pliku intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); przed wywołaniem fragment.startActivityForResult (intent, 0); +1 dla ciebie. – teapeng
Kocham cię Adamn –