我正在尝试实现自定义应用栏,目前我有1个活动,并使用导航组件访问不同的片段。
无论我做什么,我都无法访问项目的点击侦听器
这是我的XML
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/timeline_app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/timeline_toolbar"
style="@style/Widget.MaterialComponents.Toolbar.Primary"
android:elevation="@dimen/_8dp"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:menu="@menu/timeline_menu" />
</com.google.android.material.appbar.AppBarLayout>
这是用于获取监听器事件的方法
private fun handleActionBar() {
timeline_toolbar?.setOnMenuItemClickListener {
when (it.itemId){
R.id.search_action -> {
//search clicked
true
}
R.id.logout_action -> {
//logout clicked
true
}
else -> false
}
}
}
我一直关注https://material.io/develop/android/components/app-bars-top 我确实使用NoActionBar实现了主题
答案 0 :(得分:0)
Toolbar timeline_toolbar = (Toolbar) findViewById(R.id.timeline_toobar);
setSupportActionBar(timeline_toolbar);
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.your_menu, menu);
return true;
}
timeline_toolbar?.setOnMenuItemClickListener {
when (it.itemId){
R.id.search_action -> {
//search clicked
true
}
R.id.logout_action -> {
//logout clicked
true
}
else -> false
}
}
在同一活动中到onCreate。 注意:我用Java编写代码是因为我不太了解Kotlin语法。