私はandroidxナビゲーションコンポーネントを試してみて、ツールバーコンテナーで私の活動を設定しました。これは、内部のナビゲーション/ステップがたくさんあるアプリの断続的な画面の1つでこれを実行しており、Archコンポーネントをこれで試してみることができると思いました。
これは断続的な画面なので、最初の画面自体からツールバーに戻るボタンを表示したいと思います。
HostアクティビティのonCreate()メソッドで以下のコードを使用してツールバーをすでに設定しています。
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
NavigationUI.setupActionBarWithNavController(this, navHostFragment.getNavController());
グラフの2番目の画面に戻るボタン/戻る矢印が表示されますが、最初の画面には表示されません。
<?xml version="1.0" encoding="utf-8"?>
<navigation 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:id="@+id/navigation"
app:startDestination="@id/listing">
<fragment
Android:id="@+id/listing"
Android:name=".ui.ItemsListingFragment"
Android:label="Items"
tools:layout="@layout/items_listing" >
<action
Android:id="@+id/listToQuantity"
app:destination="@id/quantity"
/>
<action
Android:id="@+id/listToReason"
app:destination="@id/reason"
/>
</fragment>
<fragment
Android:id="@+id/quantity"
Android:name=".ui.ItemQuanitySelectionFragment"
Android:label="Items"
tools:layout="@layout/fragment_item_quanity_selection" >
<action
Android:id="@+id/quantityToReason"
app:destination="@id/reason"
/>
</fragment>
<fragment
Android:id="@+id/reason"
Android:name=".ui.ItemReasonFragment"
Android:label="Items"
tools:layout="@layout/fragment_item_reason">
</fragment>
</navigation>
ツールバーに戻るボタンを最初のステップから追加するために、さらに変更が必要です。
setUpActionBarWithNavCntroller
を呼び出すときは、次のように関数onSupportNavigateUp
をオーバーライドする必要があります。
override fun onSupportNavigateUp(): Boolean {
return findNavController(R.id.navHostFragment).navigateUp()
|| super.onSupportNavigateUp()
}