2013-03-29 8 views
7

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

2

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

5

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().

+0

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

+0

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

+0

Kocham cię Adamn –

6

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.