Android菜单操作栏:为什么不';其中一个元素听不到咔嗒声吗?

Android菜单操作栏:为什么不';其中一个元素听不到咔嗒声吗?,android,menu,menuitem,Android,Menu,Menuitem,我有一个FragmentActivity类,它从超类继承了一个2-options menú,用于代码重用 在这个FragmentActivity中,我添加了第三个菜单项,并将OnOptions ItemSelected设置为对共享菜单项执行我想要的操作(第三个获得自己的OnMenu ItemClick listener)。但是,当我运行应用程序时,第二个和第三个选项(指向菜单和新选项的选项)确实会注册单击并按要求执行,但第二个选项(称为共享意图的选项)不会。轻敲它什么也没用 这是我的菜单xml

我有一个FragmentActivity类,它从超类继承了一个2-options menú,用于代码重用

在这个FragmentActivity中,我添加了第三个菜单项,并将OnOptions ItemSelected设置为对共享菜单项执行我想要的操作(第三个获得自己的OnMenu ItemClick listener)。但是,当我运行应用程序时,第二个和第三个选项(指向菜单和新选项的选项)确实会注册单击并按要求执行,但第二个选项(称为共享意图的选项)不会。轻敲它什么也没用

这是我的菜单xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/ab_comparte"
    android:icon="@android:drawable/ic_menu_share"
    android:showAsAction="always|withText"
    android:title="@string/menu_share" 
    android:menuCategory="container" 
    android:orderInCategory="1"
    android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider"
    />
<item
    android:id="@+id/ab_menu"
    android:icon="@drawable/ic_action_bar_menu"
    android:showAsAction="always|withText"
    android:title="@string/menu_menu" 
    android:menuCategory="container" 
    android:orderInCategory="2"/>

</menu>
下面是与超类菜单相关的位

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.menu_activity_login, menu);
    return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    if (itemId == R.id.ab_menu){
        // cerrar sesión
        Log.d(CData.LOGTAG, "pulsado en menú item Menú" + itemId);

        Intent intent = new Intent(this, MenuFA.class);
        //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        return true;
    }else{
            Log.d(CData.LOGTAG, "pulsado en menú item " + itemId);
            return super.onOptionsItemSelected(item);
    }
}
那么我做错了什么?选项ab_菜单正常工作。选项“Me gusta”(有自己的倾听者)也有效。但是选项ab_compare虽然出现在actionbar上,但它甚至不会“监听”点击

任何帮助都将不胜感激

更新: 我已在共享项的xml上更改了此选项

android:showAsAction="collapseActionView|always"

现在,当我单击“共享”菜单项时,actionbar会更改,并显示另一个带有(不同)共享图标的项目。如果我点击这个第二个共享项,它确实起作用,它调用共享意图。然而,我不想这样做。只需单击第一个项目就可以调用共享意图,而不是更改操作栏以显示第二个共享项目。。。。我做错了什么?

好的,所以我已经让它工作了。我似乎在活动中遗漏了一些代码,即:

我给菜单充气

    @Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.menu_detalle_tapa, (Menu) menu);
    MenuItem item = menu.findItem(R.id.ab_comparte);
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    this.menu = menu;
    return true;
}
当我已经获得远程数据时,会发生此位(因此您无法尝试共享空/空对象)

            /** Getting the target intent */
        Intent intent = getDefaultShareIntent();
        Log.d(CData.LOGTAG, "check if intent is null ");
        /** Setting a share intent */
        if(intent!=null)
            mShareActionProvider.setShareIntent(intent);
        else
            Log.d(CData.LOGTAG, "intent was null ");
这里是我决定分享什么的地方

private Intent getDefaultShareIntent(){

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    //intent.putExtra(Intent.EXTRA_SUBJECT, "SUBJECT");
    String en = Tappabook.getAppContext().getResources().getString(R.string.en);
    String comparteTapa = 
            tapaDetallada.getNombre() + " " 
                    + " " + en + " " 
                    + tapaDetallada.getBarNombre() + " "
                    + CData.urlCompartirTapa + tapaDetallada.getId()
                    ;
    intent.putExtra(Intent.EXTRA_TEXT,comparteTapa);
    return intent;
}
原来我是个白痴:p

private Intent getDefaultShareIntent(){

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    //intent.putExtra(Intent.EXTRA_SUBJECT, "SUBJECT");
    String en = Tappabook.getAppContext().getResources().getString(R.string.en);
    String comparteTapa = 
            tapaDetallada.getNombre() + " " 
                    + " " + en + " " 
                    + tapaDetallada.getBarNombre() + " "
                    + CData.urlCompartirTapa + tapaDetallada.getId()
                    ;
    intent.putExtra(Intent.EXTRA_TEXT,comparteTapa);
    return intent;
}