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指南
在你的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指南
相关文章推荐
- Android---添加一个共享操作
- Android官方文档---添加一个共享操作
- 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
- 一个操作共享内存的类!可以方便的添加,删除数据,包括各种结构体!
- 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
- Android 系列 6.6向操作栏添加共享操作
- 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
- Google Android开发者文档系列-创建有内容分享特性的应用之添加一个简单的共享action
- Android - 分享内容 - 添加一个简单的分享操作
- Android添加一个新的按键
- IIS 一个服务器下不同站点操作共享文件夹
- Android 8.0系统上使用WindowManager添加view的一个问题
- 用JAVA代码为android应用添加一个按钮
- 完美解决Android在listview添加checkbox实现批量操作问题
- android实例,给一个按钮添加一个事件
- android定制化软件修改或添加按键驱动的核心操作步骤讲解
- 图片布局在android中资源文件夹中添加一个新的图片资源
- 创建静态库第二种方法:在原有工程上操作,打开已存在的工程,然后添加一个要做成.a静态库的 Target 在此,简单命名为mylibrary
- Building Coder(Revit 二次开发) - 为一个共享参数绑定添加一个类别
- android中创建一个activity类就必须添加到androidmainifest.xml中