Saya harus ActionBarActivity
dengan NavigationDrawer
dan menggunakan support_v7 Toolbar
sebagai ActionBar. Di salah satu bilah alat fragmen saya memiliki tampilan khusus. Di fragmen lain Toolbar
harus menunjukkan judul.
Bagaimana cara mendapatkan Toolbar
contoh untuk menyesuaikan dari fragmen? Saya bisa mendapatkan ActionBar dengan getActivity().getActionBar()
, tetapi jika saya memanggil setTitle()
untuk contoh ini ActionBar itu tidak melakukan apa-apa.
UPD:
Dalam kasus saya
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle();
(seperti yang dikatakan MrEngineer13) tidak berfungsi pada pembuatan fragmen pertama karena saya memanggilnya dari onHiddenChanged (). Sekarang saya menambahkan lebih banyak satu ke onCreateView () dan itu berfungsi dengan baik.
Jawaban:
Anda perlu untuk membuang aktivitas Anda dari
getActivity()
keAppCompatActivity
pertama. Berikut contohnya:Alasan Anda harus melakukan cast adalah karena
getActivity()
mengembalikan aFragmentActivity
dan Anda membutuhkan fileAppCompatActivity
Di Kotlin:
sumber
Jika fragmen harus memiliki tampilan kustom ToolBar, Anda dapat mengimplementasikan ToolBar untuk setiap fragmen secara terpisah.
tambahkan ToolBar ke dalam fragment_layout:
temukan dalam fragmen:
pendengar menu dapat dibuat dengan dua cara: override onOptionsItemSelected di fragmen Anda:
atau setel listener untuk toolbar saat membuatnya di onCreateView ():
sumber
onOptionsItemSelected()
daripada Fragment, untuk menghindari pengulangan kode.Anda memiliki dua pilihan untuk mendapatkan Toolbar dalam fragmen
Pertama
dan yang kedua
sumber
sumber
Untuk pengguna Kotlin
(activity as AppCompatActivity).supportActionBar?.show()
sumber
!!
sepenuhnya dapat dihindari dengan?
dan itu akan menyelamatkan Anda dari kemungkinan kecelakaan(activity as? AppCompatActivity)?.supportActionBar?.show()
Mungkin Anda harus mencoba
getActivity().getSupportActionBar().setTitle()
jika Anda menggunakan support_v7.sumber
Dari Fragmen Anda: (dapatkan Toolbar dari fragmen?)
ini sangat membantu saat Anda menggunakan spinner di Toolbar dan memanggil spinner atau tampilan kustom di Toolbar dari sebuah fragmen!
Dari Aktivitas Anda:
sumber
Dalam XML
Kotlin: Dalam fragment.kt -> onCreateView ()
-> onCreateOptionsMenu ()
-> onOptionsItemSelected ()
sumber
Saya melakukannya dengan menggunakan langkah-langkah ini.
onCreateView
fragmen utama.MainActivity
(Aktivitas Induk) dari fragmen. Bahkan jika Anda menggunakan tombol atau item menu apa pun maka Anda dapat mengubah judul darionSelectedItemClickListener
, seperti yang saya lakukan dalam kasus saya.sumber
jika Anda menggunakan toolbar kustom atau ActionBar dan ingin mendapatkan referensi toolbar / panel tindakan dari Fragmen, Anda harus terlebih dahulu mendapatkan instance Aktivitas Utama dari Metode onCreateView Fragment seperti di bawah ini.
kemudian gunakan aktivitas untuk implementasi lebih lanjut seperti di bawah ini
Sebelum memanggil ini, Anda perlu menginisialisasi toolbar kustom Anda di MainActivity seperti di bawah ini.
Set pertama tentukan toolbar publik Anda seperti
dan di Metode onCreate (), tetapkan id toolbar kustom
Itu dia. Ini akan berfungsi di Fragmen.
sumber