ナビゲーションコントローラーを使用して戻るボタンを押した後に前のフラグメントが表示されないようにするにはどうすればよいですか?

Alexa289

現在、ナビゲーションコントローラーを使用しようとしています。私はから移動したいLoginFragmentHomeFragmentではLoginFragmentIへの移行には、以下のコードを使用します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)

これらのフラグを使用することで、期待される動作を取得するために使用します。しかし、ナビゲーションコントローラーを使用して同じ動作を実装する方法はありません。

ianhanniballake

ナビゲーションは、操作の一部としてバックスタックからフラグメントを削除するための属性popUpTopopUpToInclusive属性を提供します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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ