目录(?)[+]
Handling options menu
Since AndroidAnnotations 2.2
@OptionsMenu
and
@OptionsItem
annotations.
@OptionsMenu
和
@OptionsItem
注解更方便地为你的activities添加选项菜单支持。
@OptionsMenu
lets you specify the menu resource to use@OptionsMenu
让你指定要使用的menu资源@OptionsItem
marks methods that receives menu selection events@OptionsItem
标记接收菜单选择事件的方法。
Both annotations can be used independently.两个注解都可以独立使用。
Here is a simple example on how to use them:下面是一个简单的例子:
@EActivity @OptionsMenu(R.menu.my_menu) public class MyActivity extends Activity { @OptionMenuItemMenuItem menuSearch;@OptionsItem(R.id.menuShare)void myMethod() { // You can specify the ID in the annotation, or use the naming convention}@OptionsItemvoid homeSelected() { // home was selected in the action bar// The "Selected" keyword is optional}@OptionsItemboolean menuSearch() { menuSearch.setVisible(false);// menuSearch was selected// the return type may be void or boolean (false to allow normal menu processing to proceed, true to consume it here)return true;}@OptionsItem({ R.id.menu_search, R.id.menu_delete })void multipleMenuItems() { // You can specify multiple menu item IDs in @OptionsItem}@OptionsItemvoid menu_add(MenuItem item) { // You can add a MenuItem parameter to access it} }
Injecting Menu items
Since AndroidAnnotations 3.0
@OptionMenuItem
can be used to inject a MenuItem in an attribute.@OptionMenuItem
用来注入一个菜单项到属性中。
Be careful : Injected menu items can't be used in @AfterInject
nor @AfterViews
annotated methods, because of Android activity lifecycle. More information are available here. 注意:因为Android activity的生命周期,注入菜单项不可以使用或者注解方法。更多信息请看这里。
Multiple Options Menu
Since AndroidAnnotations 2.7
You can combine multiple xml menus with @OptionsMenu
:你使用 @OptionsMenu
注解可以组合多个xml菜单:
@EActivity @OptionsMenu({ R.menu.my_menu1, R.menu.my_menu2}) public class MyActivity extends Activity { }
Fragment support
Since AndroidAnnotations 2.7
You can also use @OptionsMenu
and @OptionsItem
in Fragments:你也可以在Fragments中使用@OptionsMenu
和@OptionsItem
:
@EFragment @OptionsMenu(R.menu.my_fragment_menu) public class MyFragment extends Fragment { @OptionsItemvoid menuRefreshSelected() { }}