ActionBar的使用--- 为ActionBar添加Up导航功能
请首先参阅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()方法。
代码下载: