1、onCreateOptionsMenu与onCreateContextMenu的区别?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button1);
/*给View 的子控件绑定ContextMenu 菜单,长按此子控件就会弹出ContextMenu菜单*/
registerForContextMenu(b);
}
/* 每次长按ContextMenu被绑定的View的子控件,都会调用此方法*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
System.out.println("onCreateContextMenu------>");
getMenuInflater().inflate(R.menu.main, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
System.out.println("onContextItemSelected------>"+item.getItemId());
return true;
}
/* 第一次按点击手机上界面上的菜单键,会调用此方法,只方法只调用一次*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
System.out.println("onCreateOptionsMenu------>");
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
System.out.println("onPrepareOptionsMenu------>");
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
System.out.println("onOptionsItemSelected------>"+item.getItemId());
return true;
}
}
其中menu中存放的main.xml文件如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item android:id="@+id/help_menu"
android:title="帮助"
android:icon="@android:drawable/ic_menu_help"
android:alphabeticShortcut="H"/>
</menu>
http://zhdy.iteye.com/blog/447789
2、 子菜单实现:
http://www.cnblogs.com/codingmyworld/archive/2011/08/25/2153099.html