我了解如何在Android中创建菜单。但是他们为每个菜单项执行的操作呢?我是否必须在每项活动中指定它们?或者有“Android”方式吗?我的意思是我们可以创建一个类,只是引用那个类,因为它是Java,但正在考虑“Android”的方式。
为了更清楚,我在res / menu文件夹中创建一个菜单,让我们说标准_menu.xml,一切看起来都不错,但是没有附带的java类文件。
编辑: 好吧我觉得我不太清楚。我想说的是。我应该为每个使用此菜单的EERY和EVERY活动中的每个菜单项指定这些操作吗?
答案 0 :(得分:0)
尝试这些。在您的活动中实施这些方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.your menu item id) {
//do some action
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:0)
以下是您必须在“活动”中覆盖的两个功能:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@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.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
您将在每个活动中覆盖这些内容。
答案 2 :(得分:0)
每个活动类都有方法onCreateOptionsMenu
。如果你想要更多的同一个菜单,那么只需要编写一些inflant()
方法就可以了解它。覆盖你可以做的是从同一个类调用你自己的方法。就是这样。
适用于Activity1
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return MyClass.myMenuClick(item);
}
for Activity2
//same
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return MyClass.myMenuClick(item);
}
MyClass {...
public static boolean myMenuClick(MenuItem item){
int id = item.getItemId();
if (id == R.id.your menu item id) {
//do some action
}
return super.onOptionsItemSelected(item);
}
}
注意强>
我的班级可以是任何东西。如果你想创建外部public
类,那么它也不会有任何问题。但如果它可以成为内部阶级,那么这是一种很好的做法
或者只是在MainActivity
。