什麼是 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
Article Comments