Activity 菜单功能

来源:互联网 发布:mysql 删除数据 编辑:程序博客网 时间:2024/06/06 05:06

在Android应用中我们经常会使用菜单功能,而它又分为标准菜单和上下文菜单两种。

1.上下文菜单

注册上下文菜单到给定的VIew ------> void registerForContextMenu(View view);

创建你所要展示的上下文菜单元素 -----> void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo);

菜单点击事件处理 ----> boolean onContextItemSelected(MenuItem item); 


2.标准菜单,在版本3.0以上后都和ActionBar一起使用,通过物理功能Menu键可以控制。

创建标准菜单 -----> onCreateOptionsMenu(Menu menu); 该方法只执行一次,2种方式用于创建你所需元素,代码创建和menu.xml引入

在显示菜单前调用 ----> onPrepareOptionsMenu(Menu menu); 用于控制是否显示菜单,修改编辑菜单

菜单点击事件处理 -----> onOptionsItemSelected(MenuItem item);


menu.xml资源需要放在res/menu中

<menu xmlns:android="http://schemas.android.com/apk/res/android"        xmlns:app="http://schemas.android.com/apk/res-auto">    <item android:id="@+id/action_add"          android:icon="@android:drawable/ic_menu_add"          android:title="@string/action_bar_add" />    <item android:id="@+id/action_edit"          android:icon="@android:drawable/ic_menu_edit"          android:title="@string/action_bar_edit"          app:showAsAction="always" />    <item android:id="@+id/action_share"          android:icon="@android:drawable/ic_menu_share"          android:title="@string/action_bar_share"          app:showAsAction="ifRoom" />    <item android:id="@+id/action_sort"          android:icon="@android:drawable/ic_menu_sort_by_size"          android:title="@string/action_bar_sort"          app:showAsAction="ifRoom">        <menu>            <item android:id="@+id/action_sort_size"                  android:icon="@android:drawable/ic_menu_sort_by_size"                  android:title="@string/action_bar_sort_size"                  android:onClick="onSort" />            <item android:id="@+id/action_sort_alpha"                  android:icon="@android:drawable/ic_menu_sort_alphabetically"                  android:title="@string/action_bar_sort_alpha"                  android:onClick="onSort" />        </menu>    </item></menu>


代码例子:

public class MainActivity extends Activity {private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main);btn = (Button) findViewById(R.id.btn);// 给Button 注册上下文菜单registerForContextMenu(btn);}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {// TODO Auto-generated method stubsuper.onCreateContextMenu(menu, v, menuInfo);// 代码创建上下文菜单元素 ,其中itemId是唯一的menu.add(1, 1, 1, "删除");menu.add(1, 2, 1, "更新");menu.add(1, 3, 1, "新增");// 通过引入menu.xml的方式控制菜单元素MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.actions, menu);}@Overridepublic boolean onContextItemSelected(MenuItem item) {// TODO Auto-generated method stubint itemId = item.getItemId();switch (itemId) {case 1:Toast.makeText(getApplicationContext(), "click删除菜单", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(getApplicationContext(), "click更新菜单", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(getApplicationContext(), "click新增菜单", Toast.LENGTH_SHORT).show();break;default:break;}return super.onContextItemSelected(item);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubLog.i("TAG", "onCreateOptionsMenu");MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.actions, menu);return true;}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {// TODO Auto-generated method stub// 这里可以做修改菜单和控制菜单有效return super.onPrepareOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubToast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show();return true;}}
这样菜单功能就完成。

0 0