- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在创建一个小型应用程序并尝试在 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
,如果此 actionProvider 在 overflow 菜单中)。
这或许可以解释为什么您没有机会动态地 setShareIntent
在 showAsAction="ifRoom"
时为您的 actionProvider .
如果你还想要setShareIntent
在onOptionsItemSelected
,您可能需要在处理另一个(非actionProvier)项的选择时执行此操作。
如果有帮助,请告诉我。
关于android - ShareActionProvider 在 showAsAction=ifRoom 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288438/
我的 Android 应用程序工具栏上的操作出现问题。 我有一个包含一些具有 app:showAsAction="ifRoom" 属性的操作的组。如果 ifRoom 的项目少于 4 个,则一切正常。但
我使用“最低要求的 SDK”API 11 创建了一个基本项目来测试 Action Bar。他们没有在栏上显示操作按钮,而是在操作溢出中结束,甚至栏是空的。我使用了以下代码。 但是当我添加以下命名空间
我正在尝试让 ActionBar 在我的应用程序上正常工作(我正在使用 ActionBarSherlock 在 Android 2.x 和 4.x 之间获得统一的 UI)。 我觉得 android:s
我的操作栏有问题,我尝试设置 search view为了得到一个可展开的搜索栏。 这很好,除了我必须使用选项 ifRoom 设置所有其他菜单项,以便在单击搜索图标时让搜索字段占据所有房间。 这部分也很
我想使用 Espresso 单击以下菜单项: 由于 ifRoom,在某些设备中,菜单在操作栏中显示为图标,而在较小的设备中,它显示在“更多选项”下。 我可以使用以下代码点击操作栏中的“保存”图标:o
我是 Android 的新手,遇到了一个似乎很常见的问题。没有一个解决方案对我有用,所以我不知道出了什么问题。 我有一个包含 2 个项目的菜单(搜索、购物),我希望搜索出现在操作栏中。但是,app:s
我正在创建一个小型应用程序并尝试在 ActionBar 上提供一个共享按钮。相关代码如下所示: list 菜单项 Activity public boolean onCreateOptionsMe
是否可以按照建议设置标志here android:showAsAction="ifRoom|withText" 以编程方式? 最佳答案 对于每个 MenuItem,执行以下操作: myMenuItem
我正在尝试向我的支持操作栏添加一些操作项。在我的 Activity 中,我还向操作栏添加了选项卡。 这是 Activity 的摘录: public class ShowEmails extends A
在我的 Flutter 应用程序中,我有一个屏幕,它是一个带有 Scaffold 小部件的 MaterialApp 作为它的主页。 这个 Scaffold 的 appBar 属性是一个 AppBar
我有一个包含以下菜单项的操作栏; 问题是我的搜索按钮没有显示在操作栏上,但文本显示在溢出中。我的操作栏有足够的空间 我正在使用 "@st
在MenuItem之后已扩展为 SearchView , 溢出菜单显示另一个搜索项。我对它的预期行为是它不会在 SearchView 时显示另一个搜索项。展开。 在MenuItem之后折叠,搜索项不再
我是一名优秀的程序员,十分优秀!