在活动中创建菜单
要定义自己的菜单,请在项目的 res/menu/
目录中创建一个 XML 文件,并使用以下元素构建菜单:
<menu>
:定义一个菜单,它包含所有菜单项。<item>
:创建一个 MenuItem,它表示菜单中的单个项目。我们还可以创建嵌套元素以创建子菜单。
步骤 1:
创建你自己的 xml 文件,如下所示:
在 res/menu/main_menu.xml
:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/aboutMenu"
android:title="About" />
<item
android:id="@+id/helpMenu"
android:title="Help" />
<item
android:id="@+id/signOutMenu"
android:title="Sign Out" />
</menu>
第 2 步:
要指定选项菜单,请覆盖活动中的 onCreateOptionsMenu()
。
在此方法中,你可以膨胀菜单资源(在 XML 文件中定义,即 res/menu/main_menu.xml
)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
当用户从选项菜单中选择一个项目时,系统将调用你的活动的重写 onOptionsItemSelected()
方法。
- 此方法传递所选的 MenuItem。
- 你可以通过调用
getItemId()
来识别该项目,getItemId()
返回菜单项的唯一 ID(由菜单资源中的android:id attribute
定义 -res/menu/main_menu.xml
)* /
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.aboutMenu:
Log.d(TAG, "Clicked on About!");
// Code for About goes here
return true;
case R.id.helpMenu:
Log.d(TAG, "Clicked on Help!");
// Code for Help goes here
return true;
case R.id.signOutMenu:
Log.d(TAG, "Clicked on Sign Out!");
// SignOut method call goes here
return true;
default:
return super.onOptionsItemSelected(item);
}
}
包起来!
你的 Activity
代码应如下所示:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "mytag";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.aboutMenu:
Log.d(TAG, "Clicked on About!");
// Code for About goes here
return true;
case R.id.helpMenu:
Log.d(TAG, "Clicked on Help!");
// Code for Help goes here
return true;
case R.id.signOutMenu:
Log.d(TAG, "User signed out");
// SignOut method call goes here
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}