job*_*ani 8 android shareactionprovider
我正在创建一个小应用程序,并试图在ActionBar上提供一个Share按钮.相关代码如下:
表现
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
Run Code Online (Sandbox Code Playgroud)
菜单项
<item android:id="@+id/shareMenuItem" android:showAsAction="never" android:title="@string/shareAction" android:orderInCategory="100" android:actionProviderClass="android.widget.ShareActionProvider"></item>
Run Code Online (Sandbox Code Playgroud)
活动
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);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下一切正常.我想在ActionBar上显示Share按钮并更改showAsAction ="ifRoom"."共享"按钮现在显示在ActionBar中,但不可点击.
我试图将其他菜单项更改为ifRoom,它们工作正常.真的不明白为什么单独的Share按钮无法正常工作.任何帮助/建议表示赞赏!
kir*_*wka 14
"不可点击"的shareAction按钮的原因是您缺少意图actionProvider(这是Android可以找到匹配的意图).
尝试通过设置
mShareActionProvider.setShareIntent(youIntentWithAction);
Run Code Online (Sandbox Code Playgroud)
在你回来之前 onCreateOptionsMenu
更新
我相信它对showAsAction ="never"的情况正常工作只是因为打开溢出选项(标记为"never")时正确设置了intent 并点击了你shareItem,当你在动作中有这个时就不会发生这种情况酒吧.
一个猜测是你在执行中设置了你的动作意图onPrepareOptionsMenu(如果你有的话),只有当你打开overflow项目时才会调用它(启动期间+一次)而不是actionBar项目.
一个重要的事情是:
onOptionsItemSelected是不是触发菜单项与actionProvider,如果在动作栏中显示(即actionProvider依旧会触发onOptionsItemSelected用户的行动,如果这actionProvider在溢出菜单).
这或许可以解释为什么你没有机会动态地setShareIntent为您actionProvider时showAsAction="ifRoom".
如果你仍然想setShareIntent在onOptionsItemSelected,你可能需要处理其他(非选择什么时候做actionProvier)项目.
如果有帮助,请告诉我.
| 归档时间: |
|
| 查看次数: |
2213 次 |
| 最近记录: |