应用应该让用户能够轻松地返回应用主屏幕。如需实现此目的,最简单的方法是针对除主 Activity 以外的所有 Activity 在应用栏中分别提供一个“向上”按钮。当用户选择“向上”按钮时,应用便会转到父 Activity。
本课程介绍如何通过在清单中声明 Activity 的父级,并启用应用栏的“向上”按钮,来向 Activity 添加“向上”按钮。
导航架构组件(目前为 Alpha 版)是另一种在应用中处理导航的方法。当用户点击“向上”按钮时,该 API 可以处理从应用的当前屏幕向上导航的操作。如需了解详情,请参阅导航架构组件。
声明父 Activity
如需在 Activity 中支持向上功能,您需要声明 Activity 的父级。为此,您可以在应用清单中设置 android:parentActivityName
属性。
android:parentActivityName
属性是在 Android 4.1(API 级别 16)中引入的。如需支持搭载旧版 Android 的设备,请定义一个 <meta-data>
名称值对,其中名称为 "android.support.PARENT_ACTIVITY"
,值为父 Activity 的名称。
例如,假设应用有一个名为 MainActivity
的主 Activity 和一个子 Activity。以下清单代码声明了这两个 Activity,并指定了父/子关系:
<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.MyChildActivity" android:label="@string/title_activity_child" 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>
启用“向上”按钮
如需为具有父 Activity 的 Activity 启用“向上”按钮,请调用应用栏的 setDisplayHomeAsUpEnabled()
方法。通常,您需要在创建 Activity 时调用此方法。例如,以下 onCreate()
方法将 Toolbar
设置为 MyChildActivity
的应用栏,然后启用该应用栏的“向上”按钮。
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my_child) // my_child_toolbar is defined in the layout file setSupportActionBar(findViewById(R.id.my_child_toolbar)) // Get a support ActionBar corresponding to this toolbar and enable the Up button supportActionBar?.setDisplayHomeAsUpEnabled(true) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_child); // my_child_toolbar is defined in the layout file Toolbar myChildToolbar = (Toolbar) findViewById(R.id.my_child_toolbar); setSupportActionBar(myChildToolbar); // Get a support ActionBar corresponding to this toolbar ActionBar ab = getSupportActionBar(); // Enable the Up button ab.setDisplayHomeAsUpEnabled(true); }
您不需要在 Activity 的 onOptionsItemSelected()
方法中捕获向上操作。相反,该方法应该调用其父类,如响应操作中所示。该父类方法会根据应用清单的规定,通过导航到父 Activity 响应“向上”操作。