gpt4 book ai didi

android - ShareActionProvider 在 showAsAction=ifRoom 时不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:41 26 4
gpt4 key购买 nike

我正在创建一个小型应用程序并尝试在 ActionBar 上提供一个共享按钮。相关代码如下所示:

list

<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>

Activity

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 上显示共享按钮并更改了 showAsAction="ifRoom"。 “共享”按钮现在显示在 ActionBar 中,但不可单击。

我尝试将其他菜单项更改为 ifRoom,它们工作正常。不太明白为什么单独的“共享”按钮无法正常工作。感谢任何帮助/建议!

最佳答案

“不可点击”shareAction 按钮的原因是您的 actionProvider 缺少 Intent (这是 Android 可以找到匹配项的 Intent )。
尝试通过

设置它
mShareActionProvider.setShareIntent(youIntentWithAction);

在您从 onCreateOptionsMenu 返回之前

更新
我相信它在 showAsAction="never"案例中正常工作只是因为在您打开 overflow 选项(标有“never”的选项)并单击您时正确设置了 Intent shareItem当你把它放在操作栏中时,这不会发生。
一种猜测是您在执行 onPrepareOptionsMenu 时设置了您的操作 Intent 。 (如果你有的话),它只会在你打开时调用 overflow项目(启动期间+一次)而不是 actionBar 项目。

一件重要的事情是:
onOptionsItemSelected不会为带有 actionProvider 的 menuItem 触发,如果它显示在操作栏中(即 actionProvider 仍然会在用户操作时触发 onOptionsItemSelected,如果此 actionProvideroverflow 菜单中)。

这或许可以解释为什么您没有机会动态地 setShareIntentshowAsAction="ifRoom" 时为您的 actionProvider .

如果你还想要setShareIntentonOptionsItemSelected ,您可能需要在处理另一个(非actionProvier)项的选择时执行此操作。

如果有帮助,请告诉我。

关于android - ShareActionProvider 在 showAsAction=ifRoom 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com