2016-04-21 5 views
-2

Ich benutze Bibliotheken, um einige Karten zu bauen, mein Java erweitert Bibliotheksklasse jetzt habe ich Anforderung, FragmentManager in meiner Java-Klasse zu verwenden, habe ich versucht, das mit innerer Klasse zu tun, aber null ZeigerausnahmeFragmentiermanager holen, ohne die Aktivität zu erweitern

+2

können Sie es einfach als eine externe Abhängigkeit akzeptieren, als ein Parameter entweder für den Konstruktor oder eine Methode. – ootinii

Antwort

0

Wenn Sie eine Activity Referenz haben: activity.getFragmentManager()

Wenn Sie eine Fragment Referenz haben: fragment.getFragmentManager()

Sie sind beide public Methoden, aber Sie werden entweder eine Aktivität oder ein Fragment, um eine Referenz benötigen.

Auch und obwohl ich es nicht empfehlen, wenn Sie einen View Bezug haben, die view.getContext() Methode wahrscheinlich ein Activity, so dass Sie vielleicht in der Lage sein zu werfen und die FragmentManager auf diese Weise zu erhalten. Aber das ist potentiell gefährlich und könnte jederzeit aufhören zu arbeiten, wenn sich die Implementierungen von Android ändern, also sollten Sie wirklich wissen, was Sie tun. Das Übergeben einer Aktivität/Fragment-Referenz ist wirklich der richtige Weg.

+0

Einfügen des folgenden Codes: Öffentliche Klasse CustomExpandCard erweitert CardExpand { String text1; public CustomExpandCard (Kontextkontext, String text1, String text2, String text3, String text4) { super (Kontext, R.layout.carddemo_example_inner_expand); this.text1 = Text1; } } Muss ich eine innere Klasse erstellen und Kontext darin übergeben. Eigentlich bin ich neu zu Android können Sie mir einige Beispielcode sagen, es wird viel helfen –

0

getFragmentManager() ist eine publicnon-static Methode von Activity. Um FragmentManager zu erhalten, müssen Sie activitycontext haben. Selbst wenn Sie die Klasse activity nicht erweitern, benötigen Sie die context.

Schauen Sie sich auch die Beschreibung dieser Methode an, sie klärt die Dinge auf.

Geben Sie den FragmentManager für die Interaktion mit Fragmenten zurück, die mit dieser Aktivität verknüpft sind.

/** 
* Return the FragmentManager for interacting with fragments associated 
* with this activity. 
*/ 
public FragmentManager getFragmentManager() { 
    return mFragments.getFragmentManager(); 
} 

Also ohne activity, FragmentManger existiert nicht.

Verwandte Themen