如果应用包含一个活动层次结构,可以在应用条上启用向上返回按钮,利用这个层次关系可以在应用中导航。
举个栗子,在这个应用条中MainActivity包含一个动作项,它会启动第二个活动OrderActivity,如果启动了OrderActivity应用条中的向上按钮,用户通过单击这个按钮就能返回到MainActivity。
听上去这好像使用后退按钮的效果是一样的,实际上使用后退按钮时,用户会根据已完成的活动历史后退,向上按钮则不同,纯粹基于应用的层次结构。如果你的应用包含大量活动,实现向上按钮会为用户提供一种快捷而简单的方法返回到活动的父活动,而无需一直按后退键。
一、设置活动的父活动
在AndroidManifest.xml中修改OrderActivity活动的属性:
<activity
android:name=".OrderActivity"
android:label="@string/create_order"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
只有在支持API16以下的应用时才需要增加meta-data元素,这里增加这个元素指示为了让你了解这种做法,另外在代码中包含这个元素也没有什么坏处。
二、增加向上按钮
要在活动代码中启用向上按钮,首先使用活动的getSupportActionBar()方法得到应用条的一个引用。这会返回一个ActionBar类型的对象,然后调用setDefaultDisplayHomeAsUpEnabled方法,传入值true。修改OrderActivity.java代码如下:
package com.hfad.bitsandpizzas;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.annotation.SuppressLint;
import android.os.Bundle;
public class OrderActivity extends AppCompatActivity {
@SuppressLint("RestrictedApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//需要使用支持库中的工具条
ActionBar actionBar = getSupportActionBar();
//启用向上按钮,尽管我们要用一个工具条作为应用条
actionBar.setDefaultDisplayHomeAsUpEnabled(true);
}
}