Android 最佳(最有效或最传统)控制方法是什么;MenuItem“;安卓系统中的s';s";ActionBar";?
在控制菜单项时,我一直在这样做:Android 最佳(最有效或最传统)控制方法是什么;MenuItem“;安卓系统中的s';s";ActionBar";?,android,android-menu,Android,Android Menu,在控制菜单项时,我一直在这样做: Menu menu; (...) @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); this.menu = menu; ret
Menu menu;
(...)
@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);
this.menu = menu;
return true;
}
(...)
public void handleSearch(View view) {
Button button = (Button) view;
if(menu.findItem(R.id.action_search).isVisible()) {
button.setText(R.string.button_search_show);
menu.findItem(R.id.action_search).setVisible(false);
} else {
button.setText(R.string.button_search_hide);
menu.findItem(R.id.action_search).setVisible(true);
}
}
“this”引用在onCreateOptions菜单中创建的菜单,该菜单具有类中任何方法都可以使用的菜单。handleSearch方法通过两次使用findItem来控制MenuItems。这感觉不是很传统或有效(我可以补充说,这是一个非常科学的观察)。有没有更传统或更有效的方法来实现这一点?有一种方法可以处理actionBar的菜单本身 试试这个:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
return (true);
case R.id.menu_home:
Intent i = new Intent(this, HomeActivity.class);
startActivity(i);
return (true);
}
return (super.onOptionsItemSelected(item));
}
您可以将MenuItem保存在变量中,而不是使用findItem两次
MenuItem myMenuitem = menu.findItem(R.id.action_search);
我没有响应单击或选择。我试图控制动作本身。哦,你可以将MenuItem保存在变量中,而不是使用findItem两次。如果你把它放在答案中,我会将它标记为这个问题的答案。