您的位置:首页 > 移动开发 > Android开发

Android---添加一个共享操作

2013-07-01 10:04 381 查看
转自: http://www.2cto.com/kf/201304/203042.html

在你的ActionBar中实现一个有效的且对用户友好的共享操作,甚至比在Android4.0(API Level 14)中引入的ActionProvider更加容易。ActionProvider一旦跟操作栏中的一个菜单项绑定,该菜单项会处理的外观和行为。在ShareActionProvider中,你提供一个共享的Intent对象,其他事情都会由ShareActionProvider来处理。

注意:ShareActionProvider在API Level 14以后有效。

更新菜单声明

要使用ShareActionProviders,就在你菜单资源文件中给对应的<item>元素定义android.actionProviderClass属性:

<menuxmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/menu_item_share"

android:showAsAction="ifRoom"

android:title="Share"

android:actionProviderClass="android.widget.ShareActionProvider" />

...

< /menu>

这种委托负责该菜单项的外观和功能。但是你需要告诉该提供器你要共享的内容。



图1.图库(Gallery)应用中的ShareActionProvider。

设置共享的Intent对象

为了让ShareActionProvider指向一个功能,你必须给他提供一个共享的Intent对象。这个共享的Intent对象应该跟“把内容发送给其他应用程序”一课中介绍的相同,它带有ACTION_SEND操作,以及通过EXTRA_TEXT和EXTRA_STREAM附加属性设置的额外数据。要跟一个共享的Intent对象相关联,首先要找到你的Activity或Fragment对象填充菜单时多对应的MenuItem对象。接下来调用MenuItem.getActionProvider()方法来获取一个ShareActionProvider对象实例。使用setShareIntent()方法来更行跟操作项关联的共享的Intent对象。例如:

privateShareActionProvider mShareActionProvider;

...

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate menu resource file.

getMenuInflater().inflate(R.menu.share_menu, menu);

// Locate MenuItem with ShareActionProvider

MenuItem item = menu.findItem(R.id.menu_item_share);

// Fetch and store ShareActionProvider

mShareActionProvider = (ShareActionProvider) item.getActionProvider();

// Return true to display menu

return true;

}

// Call to update the share intent

private void setShareIntent(Intent shareIntent) {

if (mShareActionProvider != null) {

mShareActionProvider.setShareIntent(shareIntent);

}

}

在你菜单创建期间,你只需设置共享的Intent对象,或者是UI改变时来设置并更新它。例如,当在图库应用中全屏浏览照片时,共享的Intent会在照片间切换时发生变化。

有关ShareActionProvider对象的详细讨论,请看Action Bar指南
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐