【问题标题】:How to listen to Actionbarsherlok menu item click from a fragment?如何从片段中收听 Actionbarsherlok 菜单项单击?
【发布时间】:2013-07-30 15:12:41
【问题描述】:

我有一个主要活动,我正在使用 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;
    }

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

【问题讨论】:

    标签: android actionbarsherlock


    【解决方案1】:

    首先,我建议在 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(意思是传递给fragment)

    @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);
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-03
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        相关资源
        最近更新 更多