Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 最佳(最有效或最传统)控制方法是什么;MenuItem“;安卓系统中的s';s";ActionBar";?_Android_Android Menu - Fatal编程技术网

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两次。如果你把它放在答案中,我会将它标记为这个问题的答案。