Android Support V7 包中 ActionBar的使用 (3) 為ActionBar添加Up導航功能

來源:互聯網
上載者:User

請首先參閱Android Support V7 包中 ActionBar的使用 (1)匯入依賴工程

在很多應用裡,我們都可以看到像所示的"<"表徵圖,點擊以後,可以返回到之前的頁面。今天我們就來學習一下怎麼實現這個效果。

一、應用情境

在介面A中有一個List,點擊其中的一個item以後,進入到介面B,這時介面B就可以添加所示的Up導航功能

二、和按下後退鍵的區別

後退鍵是嚴格按照使用者點擊的時間順序,來進行後退顯示之前的螢幕。

而Up導航功能卻和時間無關,只和程式的層級關係有關,也就是由你自己來決定Up點擊後到達那個介面

三、實現方法:

1.在需要實現Up導航功能的介面中調用如下方法:

Actionbar actionBar = getSupportActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

調用該方法以後,該介面的表徵圖左側就會出現“<”符,但是點擊的時候是不會有任何效果。

2.實現Up導航功能

2.1>通過manifest檔案實現

當parent Actitvity都一樣的時候,推薦使用該方法

API>=16時,可以直接在activity節點添加parentActivityName屬性

API<16時,還需要添加<meta-data>節點

範例程式碼:

<activity        android:name="com.example.myfirstapp.DisplayMessageActivity"        android:label="@string/title_activity_display_message"        android:parentActivityName="com.example.myfirstapp.MainActivity" >        <!-- Parent activity meta-data to support API level 7+ -->        <meta-data            android:name="android.support.PARENT_ACTIVITY"            android:value="com.example.myfirstapp.MainActivity" />    </activity>

這樣設定以後,當你點擊“<”符的時候就會返回到指定的activity。

2.2> 通過代碼實現

該方法適用於多個介面可以到達同一個介面,也就是說parent activity不一樣的情況。

主要是重寫getSupportParentActivityIntent() 和onCreateSupportNavigateUpTaskStack()方法.

子Activity運行在自己程式中的任務棧時,當使用者點擊“<”符,系統會調用getSupportParentActivityIntent()方法,我們需要重寫這個方法來返回恰當的Intent。

子Activity運行在其他程式的任務棧時,當使用者點擊“<”符,系統會調用onCreateSupportNavigateUpTaskStack()方法,在該方法中要使用TaskStackBuilder來為其傳遞要返回的Activity。

如果不想重寫onCreateSupportNavigateUpTaskStack()方法,也可以在manifest檔案中像2.1介紹的方法一樣添加父Activity。

另外需要注意的是,如果程式中的介面使用的不是Activity而是Fragement,那麼上述的兩個方法就無效了,而需要重寫onSupportNavigateUp()方法和popBackStack()方法。


對於2.2,由於本人英文水平有限,理解的不是十分透徹,特此附上英文原文,大家參考

  • Or, override getSupportParentActivityIntent() and onCreateSupportNavigateUpTaskStack() in
    your activity
    .

    This is appropriate when the parent activity may be different depending on how the user arrived at the current screen. That is, if there are many paths that the user could have taken to reach the
    current screen, the Up button should navigate backward along the path the user actually followed to get there.

    The system calls getSupportParentActivityIntent() when
    the user presses the Up button while navigating your app (within your app's own task). If the activity that should open upon up navigation differs depending on how the user arrived at the current location, then you should override this method to return
    the Intentthat starts the appropriate
    parent activity.

    The system calls onCreateSupportNavigateUpTaskStack() for
    your activity when the user presses the Upbutton while your activity is running in a task that does not belong to your app. Thus, you must use theTaskStackBuilder passed
    to this method to construct the appropriate back stack that should be synthesized when the user navigates up.

    Even if you override getSupportParentActivityIntent() to
    specify up navigation as the user navigates your app, you can avoid the need to implement onCreateSupportNavigateUpTaskStack() by
    declaring "default" parent activities in the manifest file as shown above. Then the default implementation ofonCreateSupportNavigateUpTaskStack() will
    synthesize a back stack based on the parent activities declared in the manifest.

Note: If
you've built your app hierarchy using a series of fragments instead of multiple activities, then neither of the above options will work. Instead, to navigate up through your fragments, overrideonSupportNavigateUp() to
perform the appropriate fragment transaction—usually by popping the current fragment from the back stack by calling popBackStack().


代碼下載:

http://download.csdn.net/detail/hkg1pek/6018563



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.