最近在看《第一行代码》第3版进行学习,学习到第12章的时候,需要隐藏Actionbar并使用Toolbar。
其中,MainActivity的onCreate( )方法代码如下所示:
import androidx.appcompat.widget.Toolbar
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
}
}
可以正常得到这个界面,通过Log查看onCreateOptionsMenu有被调用
学习郭霖大神这篇博客的写法改成用ViewBinding时,无法加载menu
https://blog.csdn.net/guolin_blog/article/details/113089706
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
binding = ActivityMainBinding.inflate(layoutInflater)
setSupportActionBar(binding.toolbar)
}
}
此时onCreateOptionsMenu没有被调用,也没找到解决办法,希望知道的大神可以在评论区告诉我
完整MainActivity代码如下:
package com.example.materialtest
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.widget.Toolbar
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
Log.i("TAG1111","onCreate")
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.toolbar, menu)
Log.i("TAG1111","onCreateOptionsMenu")
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.backup -> Toast.makeText(this, "you click backup", Toast.LENGTH_SHORT).show()
R.id.delete -> Toast.makeText(this, "you click delete", Toast.LENGTH_SHORT).show()
R.id.settings -> Toast.makeText(this, "you click settings", Toast.LENGTH_SHORT).show()
}
Log.i("TAG1111","onOptionsItemSelected")
return true
}
}



