1. 程式人生 > >ActionBar(6)操作提供器ActionProvider及以ShareActionProvider演示

ActionBar(6)操作提供器ActionProvider及以ShareActionProvider演示

一.ActionProvider簡介

與操作視窗類似,操作提供器(由ActionProvider類定義的)用一個定製的佈局代替一個操作專案,它還需要對所有這些專案行為的控制。當你在操作欄中給一個選單項宣告一個操作專案時,它不僅要一個定製的佈局來控制這個選單項的外觀,而且當它在顯示在溢位選單中時,還要處理它的預設事件。無論是在操作欄中還是在溢位選單中,它都能夠提供一個子選單。

       例如,ActionProvider的擴充套件類ShareActionProvider,它通過在操作欄中顯示一個有效的共享目標列表來方便共享操作。與使用傳統的呼叫ACTION_SEND型別Intent物件的操作項不同,你能夠宣告一個ShareActionProvider物件來處理一個操作項。這種操作提供器會保留一個帶有處理ACTION_SEND型別Intent物件的應用程式的下拉列表,即使這個選單項顯示在溢位選單中。因此,當你使用像這樣的操作提供器時,你不必處理有關這個選單項的使用者事件。

要給一個操作項宣告一個操作提供器,就要在選單資源中對應的<item>元素中定義android:actionProviderClass屬性,提供器要使用完整的類名。例如:

[html] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <menuxmlns:android="http://schemas.android.com/apk/res/android">
  3.     <itemandroid:id="@+id/menu_share"
  4.           android:title
    ="@string/share"
  5.           android:showAsAction="ifRoom"
  6.           android:actionProviderClass="android.widget.ShareActionProvider"/>
  7.     ...  
  8. </menu>

       在這個例子中,用ShareActionProvider類作為操作提供器,在這裡,操作提供器需要選單項的控制,並處理它們在操作欄中的外觀和行為以及在溢位選單中的行為。你必須依然給這個選單項提供一個用於溢位選單的文字標題。

儘管操作提供器提供了它在溢位選單中顯示時所能執行的預設操作,但是Activity(或Fragment)也能夠通過處理來自onOptionsItemSelected()回撥方法的點選事件來重寫這個預設操作。如果你不在這個回撥方法中處理點選事件,那麼操作提供器會接收onPerformDefaultAction()回撥來處理事件。但是,如果操作提供器提供了一個子選單,那麼Activity將不會接收onOptionsItemSelected()回撥,因為子選單的顯示替代了選擇時呼叫的預設選單行為。

二.ShareActionProvider演示

ActionProvider,一旦附加到一個ActionBar的選單項後,可以同時處理此選單項的外觀和行為。在ShareActionProvider中,你只需要提供一個intent物件,剩下的操作就由它來替你完成。、

1.     更新選單的宣告:

我們在選單資原始檔裡定義帶有一個android:actionProviderClass 屬性的item,如下的程式碼片段:

這個代理類負責ShareActionProvider的外觀及功能。然而你仍然需要告知provider你想要分享什麼東西。

2.     設定Share Intent

   使用ShareActionProvider,必須提供一個intent,同時這個intent需要宣告ACTION_SEND和表示資料的extras(如EXTRA_TEXT、 EXTRA_STREAM);

   指定一個share intent時,首先要找到相應的MenuItem,同時將Activity或者是Fragment中的選單資源展開。然後,呼叫MenuItem.getActionProvider()獲取一個ShareActionProvider的例項,再呼叫setShareIntent()分享與那個action item相關聯的share intent。

程式碼片段如下:

   需要注意是,如果一個應用程式需要接受Share Intent傳送的共享資料,那麼需要在該應用程式的Manifest.xml檔案中定義<intent-filter/>元素,指明應用元件想要接受的intent。例如,針對上面傳送的共享資料,另一個接收資料應用的Manifest.xml檔案應註冊intent-filter如下:

   在給應用的Manifest.xml註冊相關的intent-filter後,在ShareActionProvider相關聯的Action Item裡將出現相應的該應用可供選擇共享圖示及標題;

下圖為效果圖:


相關推薦

ActionBar(6)操作提供ActionProviderShareActionProvider演示

一.ActionProvider簡介 與操作視窗類似,操作提供器(由ActionProvider類定義的)用一個定製的佈局代替一個操作專案,它還需要對所有這些專案行為的控制。當你在操作欄中給一個選單項宣告一個操作專案時,它不僅要一個定製的佈局來控制這個選單項的外觀,而且

ActionBar(7)自定義的操作提供

  當你想要建立一個有動態行為和在懸浮選單中有預設圖示的操作視窗時,繼承ActionProvider類來定義這些行為是一個比好的的方案。建立自己的操作提供器,提供一個有組織的可重用的元件,而不是在Fragment或Activity的程式碼中處理各種操作項的變換和行為。

rpm為後端yum為前端工具的程序包管理在Linux發行版系統centos中的使用

rpm yum 程序包管理: 應用程序的安裝,實際上是解壓縮並復制程序包中的文件到指定目錄的過程; 程序包管理器: 方便終端用戶進行程序的安裝、卸載、升級、安裝信息查詢及校驗等工作; 不同的Linux的發行版本中,有不同的程序包管理器: Debian:dpt;Redhat:rpm;S.u.S.

solr 6.2.0系列教程(二)IK中文分詞配置新增擴充套件詞、停止詞、同義詞

前言 2、solr的不同版本,對應不同版本的IK分詞器。由於IK 2012年停止更新了。所以以前的版本不適合新版的solr。 有幸在網上扒到了IK原始碼自己稍微做了調整,用來相容solr6.2.0版本。IK原始碼下載地址 步驟 1、解壓下載的src.rar壓縮包,這是我建

sed 強大的流文本編輯淺析示例演示

sed 流編輯器 行編輯器 註釋 MarkdownPad Documentsed 流(行)編輯器著有文本處理三劍客之稱:grep , sed , awksed作為其中之一對於文本處理可謂是異常強大,能夠大批量處理文本復雜繁瑣的修改,添加,刪除等操作,並能夠完美的與正則表達式相結合使用.處理文本

最全面的Java字節byte操作,處理Java基本數據的轉換進制轉換操作工具,流媒體java底層開發項目常用工具類

進制 string 常用工具類 cat i++ logs 指定位置 tput off 前言:用於處理Java基本數據的轉換及進制轉換操作工具 一、實現功能 1、int預byte互轉 2、int與byte[]互轉 3、short與byte互轉 4、short與byte[]互轉

【雲安全與同態加密_調研分析(6)】雲計算雲安全主流體系架構與模型——By Me

不同的 同態 示意圖 提供者 nis 管理 ati 分享 style 雲計算及雲安全的主流體系架構與模型 1. 雲計算主流安全參考模型 1.1 雲計算安全參考模型

MySQL 服務安裝命令使用

過程 nbsp 決定 提高 tar 這一 關系 成本 註意 本文來自實驗樓相關部分的文檔和實驗操作過程。 一、MySQL簡介   MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,提高了速度並提高了靈活性。MySQL所使

ubuntu下 SVN 服務搭建使用

root version use packages ups mar 運行 登錄 file 1.安裝Subversion ServerSubversion server binaries maintained by the Ubuntu Project. Packages i

(轉)開放window是服務端口——8080為例

win 做了 tcp and setting 範圍 -- .com 右上角 本文記錄兩個內容: 1.win7下打開端口 2.服務器(2003或者其他老版的系統以2003為例) 測試端口時 可用telnet 命令 偵聽端口:C:\Documents and Setti

Java學習之集合框架的叠代--IteratorjkListItertor接口

fault 之前 pre padding 指定 pan 存在 當前 iou   通常情況下,你會希望遍歷一個集合中的元素。例如,顯示集合中的每個元素。一般遍歷數組都是采用for循環或者增強for,這兩個方法也可以用在集合框架,但是還有一種方法是采用叠代器遍歷集合框架,它是一

銀河麒麟操作系統常見問題解決方法(四)

更換 架構 ash 信息技術 .cn 計算 科技 安裝問題 cti 銀河麒麟操作系統常見問題及解決方法(四) ——激活問題 銀河麒麟操作系統是國防科大唯一授權給天津麒

yum安裝rabbitmq3.6.11與erlange20配置優化

rabbitmq3.6.11yum安裝rabbitmq3.6.11與erlange20配置及優化RabbitMQ簡介AMQP,即Advanced Message Queuing Protocol,高級消息隊列協議,是應用層協議的一個開放標準,為面向消息的中間件設計。消息中間件主要用於組件之間的解耦,消息的發送

android--創建自己的內容提供

長度 delete fin 獲取 存在 bsp oncreate 功能 跨程序 想要實現跨程序共享數據需要用到內容提供器,內容提供器給別的應用提供了訪問接口,可以新建一個類去繼承ContentProvider來創建一個自己的內容提供器。ContentProvider類中有6

Centos 6.5 服務下面配置郵件客戶端 發送報警郵件

postfix crontab 郵件報警 監控以Centos 系統為例,確保服務器可以正常連接外網Centos 6.5 下面默認 安裝 postfix查看rpm -qa | grep postfixpostfix-2.6.6-2.2.el6_1.x86_64配置郵件客戶端set [email pr

如何配置FTP服務,方便操作服務文件

media 點擊 step tar d3d 雙擊 .com one fault 1 進入“控制面板”->“程序”->"打開或關閉Windows功能",找到“Internet信息服務”選項 2 將“Internet信息服務

思科 DHCP服務配置DHCP中繼

exclude fault 中繼 help 關閉 參數 bsp ffffff net 思路: 1、配置 DHCP 客戶端 確保每個 PC 為 自動獲取IP地址的方式;2、配置 SW1 # 創建 VLAN

學習手記-基於iTOP4412開發板NFS服務搭建測試

udp 都是 使用 共享目錄 none padding rgb 安裝 通訊 NFS特點:1)基於UDP/IP2)功能和網盤基本上差不多,但性能沒那麽強。NFS服務器搭建步驟:在ubantu上安裝nfs軟件:nfs-kernel-server配置文件1)打開配置文件:/etc

python3.6操作mysql

mage jsb 數據庫連接 遍歷 結構 hal etc fin ext 1.通過 pip 安裝 pymysql 進入 cmd 輸入 pip install pymysql 回車等待安裝完成; 安裝完成後出現如圖相關信息,表示安裝成功。 2.測試連接 import

css基礎 屬性選擇 屬性值指定字符開頭 / 結束

w3cschool text con content ctype 結束 title pre ima 禮悟:   公恒學思合行悟,尊師重道存感恩。葉見尋根三返一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉養身心,誠勸且行且珍惜。