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

转自: 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指南

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值