我有一个项目,如果有人点击硬件按钮菜单,会出现三个不同的选项:
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_information"
android:title="@string/action_information"/>
<item
android:id="@+id/action_impressum"
android:title="@string/action_impressum"/>
我创建了一个设置,信息和impressum活动。现在应该可以在有人点击相应的菜单子项时显示它们。但我没有胶水怎么做。我知道,如何点击按钮并显示新活动:
View button = findViewById(R.id.button_pong);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent startActivity = new Intent(v.getContext(),
PongActivity.class);
startActivity(startActivity);
}
});
与硬件按钮类似吗?
答案 0 :(得分:4)
在您的活动中,覆盖onCreateOptionsMenu()
。例如:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mnuInflater = getSupportMenuInflater();
mnuInflater.inflate(R.menu.your_menu, menu); // your_menu IS THE MENU XML YOU HAVE CREATED
return super.onCreateOptionsMenu(menu);
}
要运行函数(在您的情况下,启动一个Activity),请覆盖onOptionsItemSelected()
。例如:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
// DO SOMETHING HERE
return true;
case R.id.action_information:
// DO SOMETHING HERE
return true;
case R.id.action_impressum:
// DO SOMETHING HERE
return true;
default:
return super.onOptionsItemSelected(item);
}
}
例如,如果您需要在用户选择菜单XML中的PongActivity
时启动action_settings
,那么该块将如下所示:(此代码将进入如上图所示的onOptionsItemSelected()
)
case R.id.action_settings:
// START THE PongActivity
Intent startActivity = new Intent(this, PongActivity.class);
startActivity(startActivity);
return true;
答案 1 :(得分:1)
阅读官方doc。查找“处理点击事件”的位。
正如您已经猜到的那样,该机制与onClick处理程序模糊地工作,但是有一个名为onOptionsItemSelected()的单独方法,其中包含一个大的switch语句,其中包含您的活动定义的每个菜单项的大小写。
您的startActivity(intent)代码将进入相应的案例。