android – ShareAAction = ifRoom时,ShareActionProvider不起作用

前端之家收集整理的这篇文章主要介绍了android – ShareAAction = ifRoom时,ShareActionProvider不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在创建一个小应用程序,并试图在ActionBar上提供一个Share按钮.相关代码如下:

表现

<uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="18" />

菜单

<item android:id="@+id/shareMenuItem" android:showAsAction="never" android:title="@string/shareAction" android:orderInCategory="100" android:actionProviderClass="android.widget.ShareActionProvider"></item>

活动

public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        MenuItem shareItem = menu.findItem(R.id.shareMenuItem);
        mShareActionProvider = (ShareActionProvider) shareItem.getActionProvider();
        return super.onCreateOptionsMenu(menu);
    }

在这种情况下一切正常.我想在ActionBar上显示Share按钮并更改showAsAction =“ifRoom”. “共享”按钮现在显示在ActionBar中,但不可点击.

我试图将其他菜单项更改为ifRoom,它们工作正常.不太明白为什么单独的Share按钮无法正常工作.任何帮助/建议表示赞赏!

解决方法

“不可点击”的shareAction按钮的原因是缺少actionProvider的意图(这是Android可以找到匹配的意图).
尝试通过设置
mShareActionProvider.setShareIntent(youIntentWithAction);

从onCreateOptionsMenu返回之前

更新
我认为它只适用于showAsAction =“never”的情况,因为打开溢出选项(标记为“never”)时正确设置了intent并点击了shareItem,当你在动作中使用它时就不会发生这种情况酒吧.
一个猜测是你在onPrepareOptionsMenu的实现中设置了你的动作意图(如果你有的话),只有当你打开溢出项目(在启动期间一次)而不是actionBar项目时才会调用它.

一件重要的事情是:
对于带有actionProvider的menuItem,不会触发onOptionsItemSelected,如果它显示在操作栏中(例如,如果此actionProvider在溢出菜单中,则actionProvider仍会触发onOptionsItemSelected用户操作).

这可能解释了为什么当showAsAction =“ifRoom”时你没有机会为actionProvider动态设置ShareIntent.

如果仍然需要onOptionsItemSelected中的setShareIntent,则在处理另一个(非actionProvier)项的选择时可能需要执行此操作.

如果有帮助,请告诉我.

原文链接:https://www.f2er.com/android/316381.html

猜你在找的Android相关文章