一、通过布局添加菜单
(1)项目目录结构
(2)main.xml代码
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.zgs.menu.MainActivity" >
<item
android:id="@+id/action_settings1"
android:orderInCategory="10"
android:title="第一项"/>
<item
android:id="@+id/action_settings2"
android:orderInCategory="11"
android:title="第二项"/>
</menu>
(3)MainActivity.java代码
package com.zgs.menu;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@SuppressLint("ShowToast")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.action_settings1:
Toast.makeText(getApplicationContext(), "点击了第一项", Toast.LENGTH_SHORT).show();
break;
case R.id.action_settings2:
Toast.makeText(getApplicationContext(), "点击了第二项", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
(4)效果演示,ctrl+m在虚拟机里相当于点击菜单menu
二、动态添加菜单
(1)项目目录结构
(2)MainActivity.java代码
package com.zgs.menu;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.main, menu);
//动态添加菜单
menu.add(0, 1, 0, "后退");
menu.add(0, 2, 0, "前进");
return true;
}
@SuppressLint("ShowToast")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case 1:
Toast.makeText(getApplicationContext(), "点击了后退", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(getApplicationContext(), "点击了前进", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
(3)操作演示
三、点击菜单弹出对话框
(1)项目目录结构
(2)MainActivity.java代码
package com.zgs.menutodialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
//重写该方法,并让其返回false,这样就不会在执行onCreateOptionsMenu
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
//弹出一个对话框
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("警告");
builder.setMessage("您的网络异常");
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.out.println("点了确定");
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//点击取消执行
System.out.println("取消");
}
});
//使用对话框一定要记得show出来
builder.show();
return false;
}
}
(3)效果演示