如何使Android操作栏菜单项自动点击

4


我有这样的情况,我的动作栏中有一个名为“click”的菜单项。我想要使此按钮自动点击而不需要手动点击。从OnCreateView()方法中是否有一种方式可以访问Android动作栏菜单项,并访问具有名称“click”的特定菜单项,然后执行自动点击,就像我们使用方法“performclick()”的按钮一样。
有人能帮我解决这个问题吗?


在onCreateView中添加你想调用的方法。 - Bora
2个回答

6
你可能会使用以下类似代码来处理菜单项的点击事件:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    if (item.getItemId() == android.R.id.home)
    {
        this.onBackPressed();
    }
}

只需使用正确的菜单项调用onOptionsItemSelected(MenuItem item)即可...就这样...

要找到您想要点击的项目,只需在菜单创建中使用以下内容:

private MenuItem mItem = null;

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getSupportMenuInflater().inflate(R.menu.abs_backup, menu);
    // get a reference to the item you want to click manually
    mItem = menu.findItem(id); 
    return true;
}

之后只需在需要的地方调用 onOptionsItemSelected(mItem); 即可...

PS:

如果你创建一个函数并在 onOptionsItemSelected 以及需要模拟按钮单击的地方调用该函数会更好看... 这样你就不需要引用该按钮,对我来说,这似乎更加清晰...


1
你可以为MenuItem创建一个成员变量,并在需要时访问它。但是它可能为空,所以在访问之前确保检查空值。你也可以尝试使用Actionbar.setCustomView(R.layout.something);并根据自己的方便处理整个布局和操作。
protected class fragment extends Fragment{

    MenuItem searchItem;

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
      if(searchItem!=null){
        searchItem.setTitle("SEARCH");
        searchItem.setOnMenuItemClickListener(menuItemClickListener);
      }
    }


    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
      super.onCreateOptionsMenu(menu, inflater);
      inflater.inflate(com.sample.R.menu.menu_main, menu);
      searchItem = menu.findItem(R.id.search);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      int itemId_ = item.getItemId();
      if (itemId_ == R.id.search) {
        handleYourEvent();
        return true;
      }
      return false;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接