現在、ナビゲーションコントローラーを使用しようとしています。私はから移動したいLoginFragment
のHomeFragment
。ではLoginFragment
Iへの移行には、以下のコードを使用しますHomeFragment
。
Navigation.findNavController(view).navigate(homeDestination)
しかし、私は戻ってボタンをタップするとHomeFragment
、それが戻って行くだろうLoginFragment
、私はボタンをタップすると、それはアプリを閉じることを期待しています。
以前の方法では、を使用する代わりにアクティビティを使用する場合Fragment
、通常、次のようなことを行って、期待される動作を取得します。
val intent = Intent(this,HomeActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK.or(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
これらのフラグを使用することで、期待される動作を取得するために使用します。しかし、ナビゲーションコントローラーを使用して同じ動作を実装する方法はありません。
ナビゲーションは、操作の一部としてバックスタックからフラグメントを削除するための属性popUpTo
とpopUpToInclusive
属性を提供しますnavigate()
。
これは、XMLで設定できます。
<!-- Add to your Navigation XML, then use navigate(R.id.go_home) -->
<action
android:id="@+id/go_home"
app:destination="@+id/home_fragment"
app:popUpTo="@+id/destination_to_pop"
app:popUpToInclusive="true"/>
または、プログラムで設定します。
NavOptions navOptions = new NavOptions.Builder()
.setPopUpTo(R.id.destination_to_pop, true)
.build();
Navigation.findNavController(view).navigate(homeDestination, navOptions)
<navigation>
要素のIDを使用することもできます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加