什麼是 Up Action?
Up Action的主要功能是返回其parent activity,使用方式相當簡單只有2個步驟。
1.在AndroidManifest.xml中指定其parent activity
2.在Activity的onCreate取得Action Bar物件並呼叫Action Bar的setDisplayHomeAsUpEnabled(true)來啟動up action。
指定 Parent Activity
使用up action必須在AndroidManifest.xml中設定其parent activity是哪個Activity。
這可以透過android:parentActivityName 屬性來設定。
在android 4.1之後使用android:parentActivityName,而android 4.1 之前的版本使用<meta-data>。
如下BasicActionActivity 是 UpActionActivity 的 parent activity
/app/src/main/res/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.codefoxx.toolbarexample">
<application
...
<activity
android:name=".basicaction.UpActionActivity"
android:parentActivityName=".basicaction.BasicActionActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.codefoxx.toolbarexample.basicaction.BasicActionActivity"
/>
</activity>
<activity android:name=".basicaction.BasicActionActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
...
啟動 Up Action
可以透過呼叫App Bar的setDisplayHomeAsUpEnabled()方法來啟動Up Action。
一般而言會在Activity建立時呼叫setDisplayHomeAsUpEnabled
如onCreate方法。如下
public class UpActionActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_up_action);
Toolbar toolBar = findViewById(R.id.app_toolbar);
setSupportActionBar(toolBar);
ActionBar supportActionBar = getSupportActionBar();
supportActionBar.setDisplayHomeAsUpEnabled(true);
}
}
注意
1.不需要在onOptionitemSelected方法內實作up button的動作,因為up button的動作就是返回其parent activity,不需要另外實作。
2.點擊up action時,要返回的parent activity必須已存在於工作棧中,若不存在則會直接關閉目前的Activity。

完整程式碼如下
/app/activity_up_action.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".basicaction.UpActionActivity">
<include
android:id="@+id/app_toolbar"
layout="@layout/toolbar_main"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
/app/src/main/res/menu/toolbar_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> </androidx.appcompat.widget.Toolbar>
以上為加入Up Action 到 App Bar的範例。
以下為App Bar的相關內容。
http://34.80.81.192/?p=6149
http://34.80.81.192/?p=6165
http://34.80.81.192/?p=6192
在〈加入 Up Action 到 App Bar〉中有 3 則留言
[…] 加入 Up Action 到 App Bar […]
[…] 加入 Up Action 到 App Bar […]
[…] 加入 Up Action 到 App Bar […]