工具栏菜单

2019-03-04  本文已影响0人  爱做梦的严重精神病患者

  Android5.0引入了工具栏这个新增组件。在此之前,应用中用于导航或提供菜单操作的是操作栏
  工具栏菜单由菜单项组成,它占据着工具栏的右上方区域。

1.在XML文件中定义菜单

<menu xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto">
          <item
                   android:id="@+id/new_crime"
                   android:icon="@android:drawable/ic_meun_add"
                   android:tittle="@string/new_crime"
                   app:showAsAction="ifRoom|withText" />
</menu>

2.创建菜单

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.fragment_crime_list, menu);   
}
...

  Fragment.onCreateOptionsMenu(Menu, MenuInflater)方法是由FragmentManager负责调用的。因此,当activity接收到操作系统的onCreateOptionsMenu(...)方法回调请求时,必须要明确告诉FragmentManager:其管理的fragment应接收onCreateOptionsMenu(...)方法的调用指令。要通知FragmentManager需要调用以下方法:
public void setHasOptionsMenu(boolean hasMenu)

class CrimeListFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setHasOptionsMenu(true);
      }
}

3.响应菜单项选择

  点击菜单中的菜单项时,fragment会收到onOptionsItemSelected(MenuItem)方法的回调请求。通过检查菜单项ID,可确定选中的是哪个菜单项。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
      switch(item.getItemId()) {
            case R.id.new_crime:
                  ...
            default:
                  return super.onOptionsItemSelected(item);          
      }
}
上一篇下一篇

猜你喜欢

热点阅读