[Android] 使用ActionBar的Up导航的简介及一个疑问

原创 2013年12月05日 19:27:45

Up,返回该app的逻辑层级的上一层,即parentActivity。

Back,返回back stack的上一个activity。

使用Up导航的方法:

在Android 4.1上,只需要声明该activity的parentActivity即可。

在Android 4.0及之前的版本上,需要include Support Library,然后添加相应的<meta-data>。

示例:

1. AndroidManifest.xml:

<application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <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 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

2. 启用ActionBar导航,实际测试不用这段代码也行

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

3.1 当该app是当前task的owner时,可以使用NavUtils.navigateUpFromSameTask()

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

3.2 如果这个activity可以由其它的app启动,则必须判断是否需要重建back stack, 见代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        Intent upIntent = NavUtils.getParentActivityIntent(this);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
            // This activity is NOT part of this app's task, so create a new task
            // when navigating up, with a synthesized back stack.
            TaskStackBuilder.create(this)
                    // Add all of this activity's parents to the back stack
                    .addNextIntentWithParentStack(upIntent)
                    // Navigate up to the closest parent
                    .startActivities();
        } else {
            // This activity is part of this app's task, so simply
            // navigate up to the logical parent activity.
            NavUtils.navigateUpTo(this, upIntent);
        }
        return true;
    }
    return super.onOptionsItemSelected(item);
}

一般使用3.1即可,不用3.2.

现在有点奇怪的:

使用Up返回的parentActivity没有自动恢复状态,而使用Back返回的activity(刚好是parentActivity的时候),就会恢复状态。很奇怪,Google官方应该不是这样设计的,否则开发者都倾向于使用Back了。留待以后解决。

Android ActionBar Home按钮返回事件处理的两种方式:

今早无聊查看了一下android官方文档,最近对ActionBarhenganxingqu
  • lh234689
  • lh234689
  • 2014年10月30日 09:10
  • 1099

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

Android Support V7 包中 ActionBar的使用 (3) 为ActionBar添加Up导航功能
  • hkg1pek
  • hkg1pek
  • 2013年08月21日 18:06
  • 5103

Android导航栏ActionBar的详细分析

详细介绍了Actionbar在2.x系统中的使用,主要包括ActionItem,ActionView,ActionProvider,ActionBar中的tab,自动以ActionBar等...
  • yuanzeyao2008
  • yuanzeyao2008
  • 2014年09月18日 22:17
  • 5513

【Android】使用Actionbar Tab导航

直接上代码。 Activity类:
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2014年11月04日 14:00
  • 1315

ActionBar中的下拉菜单列表导航

主要有四个步骤 1、chuanj
  • fengdian29147001
  • fengdian29147001
  • 2014年06月30日 13:27
  • 3773

ActionBar中的返回键的设置及使用(位于屏幕左上角)

对屏幕左上角原title处上,使用ActionBar设置返回键。
  • agent_bin
  • agent_bin
  • 2016年08月22日 22:22
  • 2503

重写actionbar的up返回按钮

@Override public boolean onOptionsItemSelected(MenuItem item) {     switch (item.getItemId()) {     ...
  • z8711042
  • z8711042
  • 2014年06月06日 17:24
  • 936

使用PopupWindow实现ActionBar下拉菜单效果

使用PopupWindow模仿ActionBar下拉菜单效果
  • sunsteam
  • sunsteam
  • 2016年11月07日 17:07
  • 999

Android ActionBar使用

Android ActionBar使用
  • zq2114522
  • zq2114522
  • 2016年01月24日 23:42
  • 1029

Android中ActionBar的用法详解

在 2.0及以上版本,需要引入android.support.v7包,然后再继承ActionBarActivity,并且把AndroidManifest文件里Activity主题改为Theme.App...
  • liujiawei00
  • liujiawei00
  • 2016年05月15日 16:58
  • 729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Android] 使用ActionBar的Up导航的简介及一个疑问
举报原因:
原因补充:

(最多只允许输入30个字)