Android---添加一個共用操作

來源:互聯網
上載者:User

在你的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指南。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.