如何让android动作栏菜单项自动点击

时间:2013-10-11 07:53:00

标签: android android-layout


我有一个场景,我在操作栏中获得了名为“click”的菜单项。我想让这个按钮自动点击而不用手动点击。有没有办法我可以从OnCreateView()访问Android操作栏菜单项,并访问具有名称“点击”的特定菜单项,并执行自动点击,就像我们使用方法“performclick()”按钮的方式。
任何人都可以帮我解决这个问题

2 个答案:

答案 0 :(得分: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 :(得分:1)

您可以为MenuItem创建成员变量,并在需要时访问它。但它可能为null,因此请确保在访问之前检查null。您也可以尝试使用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;
    }
}