1

我有一个主要活动,我正在使用 actionbarsherlok,其中有一个菜单项,

  public boolean onCreateOptionsMenu(Menu menu) {
        // Used to put dark icons on light action bar


        menu.add("Refresh")
        .setOnMenuItemClickListener(new OnMenuItemClickListener() {

            public boolean onMenuItemClick(MenuItem item) {
                // TODO Auto-generated method stub

                          return false;
            }
        }).setIcon(R.drawable.ic_refresh)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

              return true;
    }

我有一个附加到这个活动的片段。我想要的是听主要活动的菜单项点击。当单击操作栏菜单项时,我想在片段中做一些事情。任何帮助,将不胜感激。提前致谢..

4

2 回答 2

3

首先,我建议在 menu.xml 文件中制作菜单,然后在 CreateOptionsMenu 上对其进行膨胀。但无论如何,在你的 sherlockFragmentActivity 中,在 onCreateOptionsMenu 中给你的菜单项一个 id

menu.add(0, REFRESH_ID, 0, "Refresh").setIcon(R.drawable.ic_refresh)
    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

然后覆盖 onOptionsItemSelected 并返回 false (意味着将其传递给片段)

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case REFRESH_ID:
            return false;
    }
    return super.onOptionsItemSelected(item);
}

然后在您的 sherlockfragment 类中调用 onCreateOptionsMenu 和 onOptionsItemSelected 但这次返回 true 以告诉系统菜单项已被处理。

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
        case REFRESH_ID:
            refresh();
            return true;
    }
    return super.onOptionsItemSelected(item);
}
于 2013-07-30T15:28:41.737 回答
2

您的片段类应该扩展SherlockFragment类而不是Fragment,然后您可以覆盖onCreateOptionsMenu(Menu menu, MenuInflater inflater)

于 2013-07-30T15:21:39.720 回答