失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android官方开发文档Training系列课程中文版:分享简单数据之添加简单的分享行为

Android官方开发文档Training系列课程中文版:分享简单数据之添加简单的分享行为

时间:2019-01-04 19:01:02

相关推荐

Android官方开发文档Training系列课程中文版:分享简单数据之添加简单的分享行为

原文地址:/training/sharing/shareaction.html

从Android4.0开始,使用ActionProvider可以更方便的在ActionBar上实现一个有效的、用户友好的分享按钮。一个ActionProvider一旦依附到了ActionBar的菜单条目上,它会处理这个菜单条目的外观和行为。在ShareActionProvider这种情况中,你只需提供一个分享意图,它会处理剩下的事情。

Note:ShareActionProvider从API 14开始可用。

上图:ShareActionProvider在相册APP中的应用。

更新菜单声明

如果要开始使用ShareActionProvider,需要在菜单资源文件中相应的< item>中定义android:actionProviderClass属性:

<menu xmlns:android="/apk/res/android"><item android:id="@+id/menu_item_share"android:showAsAction="ifRoom"android:title="Share"android:actionProviderClass="android.widget.ShareActionProvider" />...</menu>

这样就定义了ShareActionProvider对菜单外观与行为的代理职责。不过,你还是需要告诉提供者Provider你要分享的东西。

设置分享意图

为了可以使ShareActionProvider运行,你必须给它提供一个分享意图。这个分享意图应该与课程Sending Simple Data to Other Apps中描述的一致,需要有行为ACTION_SEND以及附加数据集比如EXTRA_TEXT或EXTRA_STREAM。为了分配一个共享意图,首先要找到在Activity或者Fragment中填充的对应的菜单条目MenuItem。接下来,调用MenuItem.getActionProvider()方法接收一个ShareActionProvider的实例。使用setShareIntent()来更新与共享意图相关的那个行为条目:

private ShareActionProvider mShareActionProvider;...@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate menu resource file.getMenuInflater().inflate(R.menu.share_menu, menu);// Locate MenuItem with ShareActionProviderMenuItem item = menu.findItem(R.id.menu_item_share);// Fetch and store ShareActionProvidermShareActionProvider = (ShareActionProvider) item.getActionProvider();// Return true to display menureturn true;}// Call to update the share intentprivate void setShareIntent(Intent shareIntent) {if (mShareActionProvider != null) {mShareActionProvider.setShareIntent(shareIntent);}}

在创建菜单期间,你可能只需要设置一次分享意图,或者你可能想在UI改变的时候通过设置它来更新它。举个例子,当你在全屏状态下浏览照片的时候,分享意图会随着照片的滑动而改变。

有关ShareActionProvider的进一步讨论,请参见Action Bar指南。

如果觉得《Android官方开发文档Training系列课程中文版:分享简单数据之添加简单的分享行为》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。