注:本博客作为学习笔记,有错误的地方希望指正
1、实现基本的菜单结构(一级菜单)
1.1 复写onCreateOptionsMenu,在MainActivity中写的
/**
* 加载菜单条目
* @param menu
* @return
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu); // 查找文件资源 ctrl + P 查看输入参数
return super.onCreateOptionsMenu(menu);
}
1.2、写菜单栏,在andriod 工程结构中res文件夹下面新建menu文件,然后再新建菜单栏对应的.xml文件,在.xml文件中实现自己菜单栏对应的代码
具体的实现代码
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:title="@string/Open_BlueTooth"
android:id="@+id/Open_BlueTooth">
</item>
<item
android:title="@string/Connect_BlueTooth"
android:id="@+id/Connect_BlueTooth">
</item>
<item
android:title="@string/Already_Connect_BlueTooth"
android:id="@+id/Already_Connect_BlueTooth">
</item>
</menu>
备注:实现二级菜单就继续在item中添加相同的操作如下同理
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/Blue_connect"
android:title="连接蓝牙">
<menu>
<item
android:id="@+id/Blue_Two"
android:title="二级目录">
</item>
</menu>
</item>
<item
android:id="@+id/BlueAlreadyConnect"
android:title="已连接设备">
</item>
</menu>
1.3 实现点击事件,实现代码
/**
* 菜单选择
* @param item
* @return
*/
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId(); //获取哪一个菜单栏点击的ID
switch (itemId){
case R.id.Open_BlueTooth : //开启蓝牙
if(mControl.getBlueToothState()){
Toast.makeText(this, "蓝牙已开启", Toast.LENGTH_SHORT).show();
}
else{
mControl.turnOn_BlueTooth(this, REQUST_CODE); //打开蓝牙 ctrl + alt + c 0 变成REQUST_CODE
Toast.makeText(this, "开启蓝牙", Toast.LENGTH_SHORT).show();
Log.d(LAG,"开启蓝牙");
}
break;
case R.id.Connect_BlueTooth: //连接蓝牙
Toast.makeText(this, "连接蓝牙", Toast.LENGTH_SHORT).show();
break;
case R.id.Already_Connect_BlueTooth://已经连接过的蓝牙
Toast.makeText(this, "已经连接过的蓝牙", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
最终实现效果