webentwicklung-frage-antwort-db.com.de

Richten Sie die Symbolleiste als Aktionsleiste in Fragment ein

Ich möchte meine Symbolleiste als Aktionsleiste einrichten. Da es sich bei Ihrer Symbolleiste jedoch um ein Layoutelement handelt, muss es sich in Ihrem Layout befinden. Jetzt ist mein Layout in meinem Fragment.

Ich habe die Symbolleiste in mein Layout eingefügt und nenne sie in meinem Fragment:

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

Es funktioniert, weil ich den Titel usw. setzen kann, aber jetzt möchte ich, dass es als Aktionsleiste reagiert, weil ich dies eigentlich haben möchte. setDisplayHomeAsUpEnabled (true)

Dazu muss ich die Symbolleiste in eine Aktionsleiste ändern:

setSupportActionBar(toolbar);

Das funktioniert in meinem Fragment nicht ... 

Kann mir jemand helfen, meine Symbolleiste als Aktionsleiste in einem Fragment zu verwenden.

34
Laurenswuyts

Nun ist ActionBarActivity so veraltet. Sie müssen Ihre Aktivität zuerst von getActivity() in AppCompatActivity umwandeln. Hier ist ein Beispiel:

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

Der Grund dafür, dass Sie es einsetzen müssen, ist, dass getActivity() eine FragmentActivity zurückgibt und Sie eine AppCompatActivity

47
Pratik Butani

versuchen:

 ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
25
notdrone

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

Verwenden Sie dann dieselbe setDisplayHomeAsUpEnabled-Methode, die Sie anfangs in der ActionBar angegeben haben, nachdem Sie Ihre Symbolleiste als ActionBar festgelegt haben, um die Zurück/Hoch-Schaltfläche zu erhalten.

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

16
dominicoder

Benutzen 

((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title");
7
Ravi

Wenn Sie Kotlin verwenden, versuchen Sie Folgendes:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, state: Bundle?): View? { 
        (activity as AppCompatActivity).setSupportActionBar(your_toolbar)
        setHasOptionsMenu(true)

        return inflater.inflate(R.layout.your_layout, container, false)
}


override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
        inflater?.inflate(R.menu.your_menu, menu)
}
0
Miravzal

Nehmen wir an, die Aktivität, die das Fragment enthält, ist MainActivity.

Tun 

MainActivity main = (MainActivity)getActivity();
//You can access all public variable and methods of MainActivity.
//simply call 
main.setSupportActionBar(toolbar)
main.getSupportActionBar.setTitle("title");
0