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