ナビゲートアップ()とポップバックスタック()の違い 質問する

ナビゲートアップ()とポップバックスタック()の違い 質問する

シンプルな ToDo アプリを作成し、AddTask Fragment から mainFragment に戻るためのナビゲーション メソッドを確認しています。そして、navigateUp() と popBackStack() を使用して戻ることができることがわかりましたが、違いがわかりません。

これを使用するとき:

Navigation.findNavController(it).navigateUp()

あるいはこれ:

Navigation.findNavController(it).popBackStack()

mainFragment に戻ると、addTaskFragment がスタックからポップされると思うのですが、誰か説明してもらえますか?

ベストアンサー1

申し訳ありませんが、(編集:以前に受け入れられた回答が絶対に間違っている場合は、navigateUp()バックスタックからトップフラグメントもポップします(ある場合)。

まず最初に:アプリ内から現在の目的地に到着した場合、動作はまったく同じです。

別のアプリからのディープリンクを使用して現在の目的地に到達した場合にのみ、動作が異なります。

navigateUp()アプリを離れ、アプリ内のディープリンクに移動したアプリに戻ります。

popBackStack()バックスタック内で 1 ステップ戻ることを試みますが、バックスタック エントリがない場合は何も行いません。

違いについては以下で読むことができます:https://developer.android.com/reference/androidx/navigation/NavController#navigateUp()

ナビゲーション階層内を上へ移動しようとします。ユーザーがアプリ UI の左上 (または開始) 隅にある左向き (または開始) 矢印でマークされた「上」ボタンを押したときに適しています。

ユーザーがアプリケーション自身のタスクから現在の目的地に到達しなかった場合、Up の意図された動作は Back とは異なります。たとえば、ユーザーが別のアプリのタスクでホストされているアクティビティで現在のアプリのドキュメントまたはリンクを表示していて、そのアクティビティでユーザーがリンクをクリックした場合などです。この場合、現在のアクティビティ (この NavController を作成するために使用されたコンテキストによって決定されます) は終了し、ユーザーはこのアプリの独自のタスクで適切な目的地に移動します。

そして

popBackStack() コントローラーのバックスタックをポップしようとします。関連付けられているナビゲーション ホストにフォーカスがあるときに、ユーザーがシステムの [戻る] ボタンを押したときと同様です。

おすすめ記事