TL; DR
Kullanın android.support.v7.widget.Toolbar
ve yapın:
toolbar.inflateMenu(R.menu.my_menu)
toolbar.setOnMenuItemClickListener {
onOptionsItemSelected(it)
}
Bağımsız Araç Çubuğu
Önerilen çözümlerin çoğu, setHasOptionsMenu(true)
yalnızca üst Etkinliğin mizanpajında Araç Çubuğu olduğunda ve bunu bildirdiği zaman çalışır setSupportActionBar()
. Daha sonra Parçalar, bu tam ActionBar öğesinin menü popülasyonuna katılabilir :
Fragment.onCreateOptionsMenu (): Parça ana bilgisayarının standart seçenekler menüsünün içeriğini başlatın.
Belirli bir Parça için bağımsız bir araç çubuğu ve menü istiyorsanız istiyorsanız, aşağıdakileri yapabilirsiniz:
menu_custom_fragment.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_save"
android:title="SAVE" />
</menu>
custom_fragment.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
...
CustomFragment.kt
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(layout.custom_fragment, container, false)
val toolbar = view.findViewById<Toolbar>(R.id.toolbar)
toolbar.inflateMenu(R.menu.menu_custom_fragment)
toolbar.setOnMenuItemClickListener {
onOptionsItemSelected(it)
}
return view
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.menu_save -> {
// TODO: User clicked the save button
true
}
else -> super.onOptionsItemSelected(item)
}
}
Evet, bu kadar kolay. Hatta geçersiz kılmak gerekmez onCreate()
ya onCreateOptionsMenu()
.
Not: Bu sadece android.support.v4.app.Fragment
ve ile çalışır android.support.v7.widget.Toolbar
(ayrıca kullandığınızdan AppCompatActivity
ve bir AppCompat
temanız olduğundan emin olun styles.xml
).