工具栏菜单(Toolbar)小记
2017-01-17 本文已影响0人
向着远方奔跑
创建菜单
- Activity类提供了管理菜单的回调函数,需要选项菜单时,直接调用Activity的
onCreateOptionsMenu(Menu)
方法 - Fragment有一套自己的选项菜单回调函数,在fragment中创建菜单,覆盖
onCreateOptionsMenu(Menu, MenuInflater)
方法
@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(...)
方法的调用指令,需在fragment中加入以下方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
响应菜单项选择
用户点击菜单项时,fragment会收到onOptionsItemSelected(MenuItem)
方法的回调请求,实现菜单项响应结果直接覆写onOptionsItemSelected(MenuItem)
方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
注意onOptionsItemSelected(MenuItem)
方法返回的是布尔值,一旦完成菜单项事件处理,应返回true值以表明全部任务已完成
实现层级式导航
层级式导航可在应用内逐级向上导航,只需在AndroidManifest.xml
中给需要向上逐级导航的Activity添加parentActivityName
属性:
<activity
android:name=".CrimePagerActivity"
android:label="@string/app_name"
android:parentActivityName=".CrimeListActivity"
></activity>