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

本文译自:http://developer.android.com/training/sharing/shareaction.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指南。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值