2013-07-25 19 views
5

Ich versuche ein DialogFragment aufzurufen, wenn ich in einem PreferenceFragment auf eine Präferenz tippe. Leider, wenn ich getFragmentManager() in DialogFragment.show() aufrufen, erhalte ich folgende Fehlermeldung:Wie kann ich einen Dialog von einem PreferenceFragment anzeigen lassen?

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

Das Problem ist, dass ich nicht android.support.v4.app.FragmentManager zu refernece scheinen von diesem Fragment. Die für dieses Fragment verantwortliche Aktivität erstreckt sich von FragmentActivity, aber offensichtlich ist das nicht genug. Ich habe versucht, getSupportFragmentManager() auch anrufen, aber das gab mir diesen Fehler:

Cannot resolve method 'getSupportFragmentManager()'

Wie kann ich diese Arbeit machen?

Hier einige Code:

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

Antwort

7

Aufbauend auf Steves Antwort, ich brauche auch die DialogFragment einzurichten, zu importieren von android.app.DialogFragment (statt android.support.v4.app.DialogFragment). Die Funktion show() in dieser Bibliothek fragt nach einem android.app.FragmentManager, den ich über einen Aufruf von getFragmentManager() bereitstellen kann, so wie ich es innerhalb des Codes getan habe, den ich in der Frage gepostet habe.

+0

Stellen Sie sicher, dass Sie Antworten aufwerten, die nützlich sind. –

+4

Ich würde upvote, aber ich habe nur 11 rep. Es ist frustrierend, um es gelinde auszudrücken. – IAmKale

4

Try this:

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

Sie können jederzeit die Aktivität nennen, die das Fragment gleich davon hält Typ es sich handelt.

EDIT:

ich war falsch, die PreferenceFragment ist nicht im Support Library enthalten ist und nur in Android 3.0 und höher zur Verfügung. Diese post könnte helfen, mit diesem Szenario umzugehen.

+0

Ich habe das auch versucht, dass der gleiche Fehler produziert, da es android.app.FragmentManager, nicht android.support.v4.app.FragmentManager zurückgibt. – IAmKale

+2

getActivity(). GetSupportFragmentManager() ist auch nicht gut? Sind Sie sicher, dass Sie die Support-Bibliothek-Importe für Ihre Fragments und Ihre FragmentActivity verwenden? –

+0

PreferenceFragment scheint keine Support-Bibliotheksklasse zu haben. Ich habe versucht, android.support.v4 herumzustochern, konnte aber nichts dafür finden. – IAmKale

Verwandte Themen