actionBar在Activity实现非常简单,如下:
1.建立menu xml 文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title="删除"
android:id="@+id/delete"
android:icon="@android:drawable/ic_menu_delete"
app:showAsAction="always"
/>
</menu>
2.在Activity中重载 onCreateOptionsMenu,加载menu 资源文件
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_activity,menu);
return super.onCreateOptionsMenu(menu);
}
3.menu 选择事件的回调实现
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.delete:
Snackbar.make(MainActivity.this.getWindow().getDecorView(),"Activity响应",Snackbar.LENGTH_LONG).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
actionBar在Fragment中实现,主要是在onCreateView中setHasOptionsMenu(true),后面与Activity中实现类似。
笔者想如果Activity和载入的Fragment使用同一个menu文件,会怎么样。
结果如图所示:
两个menu同时显示,但点击其中任一个都执行Activity中的回调方法。