2016-06-21 12 views
0

Ich versuche, wie diese jedochein Fragment aus einem Fragmente erstellen, ohne Fragment-Manager

SettingsFragment fragment = new SettingsFragment(); 
FragmentManager fragmentManager = getSupportFragmentManager(); 
fragmentManager.beginTransaction() 
    .replace(R.id.fragment_container, fragment, SETTINGS_FRAGMENT_TAG) 
    .commit(); 

ein Fragment mit dem Code zu nennen, da ich mich verändert „erstreckt Fragment“ auf „PreferenceFragment“ in meinem SettingFragment Ich benutze

public class SettingsFragment extends PreferenceFragment {} 

diese Linie mir den Fehler geben, dass mein zweites Argument „Fragment“ es ist immer noch nicht

arbeiten „android.support.v4.app.Fragment“ Nach dem Hinzufügen dieses lib erfordert

Es sieht so aus, als ob mein fragmentManager mein Fragment verwirrt ... Gibt es eine Möglichkeit, dieses Problem zu lösen oder den FragmentManager nicht zu verwenden? Danke

+1

Sie müssen mehr tun, als nur die gewünschte Bibliothek hinzuzufügen. Sie müssen sicherstellen, dass 'PreferenceFragment' auch' android.support.v4.app.Fragment' erweitert. – NoChinDeluxe

+0

Hallo @NoChinDeluxe Danke für die Antwort. Könnten Sie genauer sein? Wie stelle ich sicher, dass PreferenceFragment android.support.v4.app.Fragment ... erweitert? – Deidara

Antwort

0

Die PreferenceFragment erweitert android.app.Fragment. Um die Unterstützung FragmentManager zu verwenden, müssen Sie eine Klasse verwenden, die die android.support.v4.app.Fragment erweitert, wie @NoChinDeluxe vorgeschlagen.

Ich schlage vor, mit der v7 Preference Support Libarary:

compile 'com.android.support:preference-v7:24.0.0' 

Diese Bibliothek enthält die PreferenceFragmentCompat-Klasse, die android.support.v4.app.Fragment erstreckt. Daher können Sie diese Klasse erweitern, anstatt PreferenceFragment, um Ihre SettingsFragment mit der Unterstützung FragmentManager zu verwenden.

+0

Hallo Bryan, Danke für deine Antwort, der Fehler ist jetzt weg. Aber ich muss irgendwie ein Vorzugsthema hinzufügen, können Sie mir sagen, wie ich es in meinem Code einstellen soll? Vielen Dank – Deidara

+0

@XiaoshengWilsonWu Sie sollten in der Lage sein, das Thema für Ihre Einstellungsfenster in dem Thema, das Sie für die Aktivität verwenden, festzulegen. In diesem Thema können Sie den 'android: preferenceStyle' und/oder den' android: preferenceScreenStyle' einstellen. – Bryan

+0

Hallo Brayan, sprichst du über AndroidManifest.xml Datei? Da ich ein Fragment verwende, um die Einstellung aufzurufen, denke ich, dass ich das Thema bereits in MainActivity angegeben habe ... Muss ich Code in andere Dateien schreiben? – Deidara

0

Da Ihr SettingsFragment erbt von PreferenceFragment, bedeutet, dass es im Wesentlichen ist ein PreferenceFragment. Dies bedeutet, dass, was auch immer PreferenceFragment erbt, Ihre SettingsFragment wird auch das sein.

Die Lösung besteht also darin, sicherzustellen, dass Ihr PreferenceFragment die korrekte Fragment Klasse erbt. Mit anderen Worten, am Anfang Ihrer PreferenceFragment Datei sollten Sie import android.support.v4.app.Fragment; und keinen anderen Fragment-Import haben. Das wird Ihre PreferenceFragment eine android.support.v4.app.Fragment machen, die dann Ihre SettingsFragment das auch machen wird, die es erlauben wird, in dem von Ihnen geposteten Code zu arbeiten.

+0

Danke, es ist sehr hilfreich. – Deidara

Verwandte Themen