2013-01-16 11 views

Odpowiedz

55

Tak, Jego prawo, wywołując getActivity i oddać go z działalności macierzystej, aby uzyskać dostęp do jego metod i zmiennych ((ParentActivityName)getActivity())

Spróbuj tego.

ParentActivityName jest dominująca nazwa klasy

+0

Co jeśli nie znamy nazwy? Przykład: robię sdk i zawiera on wszystkie fragmenty. Nie mogę poprosić użytkownika sdk o zmianę nazwy jego aktywności. Jak uzyskać referencję bez znajomości nazwy? – Kay

+0

Jak chcesz użyć tego odniesienia? – DcodeChef

+1

Mam to. Moim przypadkiem użycia było utworzenie n fragmentów w bibliotece i udostępnienie Kupcom. Nie wiedziałbym, z której aktywności będą korzystać fragmenty. Wygląda na to, że tworzenie interfejsu, nadpisywanie aktywności i uzyskiwanie wywołania zwrotnego z działania wydaje się najlepszą praktyką, a mój scenariusz jest bardzo pomocny .. – Kay

7

najwłaściwszym sposobem jest uczynić swój Activity wdrożyć Interface i używać słuchaczy. W ten sposób Fragment nie jest związany z żadnym konkretnym Activity, dzięki czemu można go ponownie użyć. Do Fragment:

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 

    // This makes sure that the container activity has implemented 
    // the callback interface. If not, it throws an exception 
    try { 
     mCallback = (OnHeadlineSelectedListener) activity; 
    } catch (ClassCastException e) { 
     throw new ClassCastException(activity.toString() 
       + " must implement OnHeadlineSelectedListener"); 
    } 
} 

ten sposób możesz dokonać Activity wysłuchać fragmentu, gdy jest z nim związane.

Zobacz także:

0

Wystarczy zadzwonić swoją aktywność rodzica stosując metodę getActivity().

CardView cardView = (CardView) getActivity().findView(R.id.your_view); 
Powiązane problemy