2014-11-20 10 views
29

Ich möchte meine Symbolleiste als Aktionsleiste einrichten, aber da Ihre Symbolleiste ein Layoutelement ist, muss es in Ihrem Layout sein. Jetzt ist mein Layout in meinem Fragment.Symbolleiste als Aktionsleiste im Fragment einrichten

Ich habe die Toolbar in meinem Layout und ich nenne es in meinem Fragmente:

//Toolbar 
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); 

Es funktioniert, weil ich den Titel und so weiter einstellen kann, aber jetzt will ich es als ActionBar reagieren, weil ich will um das tatsächlich zu haben. setDisplayHomeAsUpEnabled (true)

zu tun, dass ich die Symbolleiste ein ActionBar ändern:

setSupportActionBar(toolbar); 

Das ist nicht in meinem Fragment funktioniert ...

jemand mir meine erhalten helfen kann, Symbolleiste, um als Aktionsleiste in einem Fragment zu arbeiten.

Antwort

39

Jetzt ist ActionBarActivity veraltet so Sie benötigen eine Aktivität von getActivity() zu AppCompatActivity zuerst zu werfen. Hier ein Beispiel:

((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle(); 

Der Grund, warum Sie werfen müssen es, weil getActivity() eine FragmentActivity zurück und Sie benötigen einen AppCompatActivity

15

ActionBar ist eine Aktivitätseigenschaft. Wenn Sie eine Symbolleiste aus einem bestimmten Fragment als ActionBar der besitzenden Aktivität festlegen möchten, rufen Sie die Aktivität ab, die das Fragment besitzt (Fragment.getActivity()), und legen Sie die ActionBar-Eigenschaft fest.

Dann verwenden Sie die selbe setDisplayHomeAsUpEnabled-Methode, die Sie erwähnt haben, um mit der ActionBar zu beginnen, nachdem Sie Ihre Symbolleiste als ActionBar gesetzt haben, um die Back/Up-Schaltfläche zu erhalten.

Sie müssen dies natürlich sorgfältig verwalten, wenn Ihre App mehrere Fragmente innerhalb dieser Aktivität enthält.

+0

Ich möchte nur die Navigation verwenden, damit ich denke, deshalb brauche ich eine Aktionsleiste aus meiner Symbolleiste. Wie kann ich diese ActionBar-Eigenschaft festlegen? Können Sie mir bitte ein Beispiel geben? – Laurenswuyts

+0

Warum legen Sie nicht einfach Ihre Symbolleiste in Ihre Hauptaktivität und auf diese Weise können Sie die setSupportActionBar Methode verwenden –

+0

Weil ich Fragmente verwende und ich mein Layout in meine Fragmente und nicht in meine Aktivitäten einstelle. So kann meine Aktivität die Symbolleiste in meinem Fragment nicht erkennen, da das Fragment geladen wird, nachdem die Aktivität nach der Symbolleiste sucht – Laurenswuyts

7

Verwenden

((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title"); 
+0

Dies gibt eine NullPointerException zurück. – Machado

+5

müssen Sie festlegen, bevor Sie erhalten. (das reimt sich) – notdrone

25

Versuch:

((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); 
Verwandte Themen