Android:onOptionItemSelected设置项Visible.GONE

时间:2016-02-10 08:21:12

标签: android android-layout searchview

我有一个搜索项目,工具栏上有另外两个项目。

点击搜索项目时,我希望其他2个项目消失,并在搜索栏关闭时重新出现。

这是我到目前为止所尝试的内容:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);

    inflater.inflate(R.menu.actions_one_fragment, menu);

    final MenuItem item = menu.findItem(R.id.action_search);
    this.menu = menu;
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
    searchView.setOnQueryTextListener(this);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    FragmentActivity activity = getActivity();
    switch (item.getItemId()) {
        case R.id.action_search:
            menu.findItem(R.id.action_item_one).setVisible(false);
            menu.findItem(R.id.action_item_two).setVisible(false);
        default:
            return super.onOptionsItemSelected(item);
}

这没有做任何事情。

2 个答案:

答案 0 :(得分:0)

你应该隐藏/删除菜单项,如:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    FragmentActivity activity = getActivity();
    switch (item.getItemId()) {
        case R.id.action_search:
            menu.removeItem(R.id.action_item_one);
            menu.removeItem(R.id.action_item_two);
        default:
            return super.onOptionsItemSelected(item);
}

答案 1 :(得分:0)

如果您想在菜单及其项目显示之前对其进行更改,Android会说您应该使用onPrepareOptionsMenu回调。这是在Android显示菜单之前调用的,因此您可以对其进行更改(及其项目),并立即生效。

在您的示例中,您只是在选择搜索选项的情况下将菜单选项设置为不可见。这可能不足以满足你的要求。