2013-07-25 13 views
5

Próbuję wywołać DialogFragment po dotknięciu preferencji w PreferenceFragment. Niestety, gdy zgłoszę getFragmentManager() w DialogFragment.show() pojawia się następujący błąd:Jak wyświetlić okno dialogowe z PreferenceFragment?

Cannot resolve method 'show(android.app.FragmentManager, java.lang.String)'

Problem polega na tym, że nie może wydawać się refernece android.support.v4.app.FragmentManager z tego fragmentu. Działanie odpowiedzialne za ten fragment rozciąga się od FragmentActivity, ale oczywiście to za mało. Próbowałem nazywając getSupportFragmentManager() jak dobrze, ale to dało mi ten błąd:

Cannot resolve method 'getSupportFragmentManager()'

Jak mogę dokonać tej pracy?

Oto niektóre kodu:

gPrefAcknowledgements.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() 
{ 
    @Override 
    public boolean onPreferenceClick(Preference preference) 
    { 
     DialogAcknowledgements dialogAck = new DialogAcknowledgements(); 
     dialogAck.show(getFragmentManager(), "acknowledgements"); 
     return true; 
    } 
}); 

Odpowiedz

7

Opierając się na odpowiedź Steve'a, ja też trzeba skonfigurować DialogFragment importować z android.app.DialogFragment (zamiast android.support.v4.app.DialogFragment). Funkcja show() w tej bibliotece prosi o android.app.FragmentManager, którą mogę zapewnić przez wywołanie metody getFragmentManager(), tak jak zrobiłem to w ramach kodu, który napisałem w pytaniu.

+0

Zastanów się nad przejęciem/zaakceptowaniem odpowiedzi, które są przydatne. –

+4

Przegrałem, ale mam tylko 11 powtórzeń. To frustrujące, co najmniej. – IAmKale

4

Spróbuj tego:

dialogAck.show(getActivity().getFragmentManager(), "acknowledgements"); 

Zawsze można zadzwonić do działalności, która posiada fragment, który równy typ.

EDIT:

byłem źle, PreferenceFragment nie jest wliczone w Bibliotece Wsparcia i jest dostępna tylko w Android 3.0 i wyższych. To post może pomóc w radzeniu sobie z tym scenariuszem.

+0

Próbowałem również, że spowodował ten sam błąd, ponieważ zwraca android.app.FragmentManager, a nie android.support.v4.app.FragmentManager. – IAmKale

+2

getActivity(). GetSupportFragmentManager() nie jest również dobry? Czy na pewno używasz importu bibliotek pomocniczych dla Fragmentów i FragmentActivity? –

+0

PreferenceFragment nie ma klas biblioteki pomocniczej. Próbowałem grzebać w android.support.v4, ale nie mogłem znaleźć nic dla niego. – IAmKale

Powiązane problemy