4


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

4

2 回答 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任何你想模拟按钮点击的地方调用这个函数可能会更漂亮......所以你不需要对按钮的引用,对我来说,这看起来更干净......

于 2013-10-11T08:21:35.587 回答
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;
    }
}
于 2013-10-11T10:20:01.547 回答