我有兩個片段(如以下代碼)。當我單擊后退按鈕時從第一個片段切換到第二個片段后,它會回傳到第一個片段,我不想成為。
這是我的代碼 nav_graph
<navigation>
<fragmentone>
<action
destination= fragmenttwo/>
</fragmentone>
<fragmenttwo>
</fragmenttwo>
</navigation>
如何像我們過去改變 Activity 那樣導航第二個片段
finish();
uj5u.com熱心網友回復:
在設計選項卡中,您將看到一個彈出行為部分

在彈出視窗中,選擇片段 1
在彈出到包含,選擇 true
uj5u.com熱心網友回復:
退出應用程式或(完成導航組件活動)與傳統方式沒有太大區別,但您需要捕捉的是要在其上完成活動的片段上的后退按鈕事件。
根據檔案,當前捕獲后退按鈕的有效方法是使用OnBackPressedDispatcher,這是一個演示:
在第二個片段上,注冊OnBackPressedDispatcher并處理handleOnBackPressed()回呼上的活動:
requireActivity().onBackPressedDispatcher.addCallback(
viewLifecycleOwner,
object : OnBackPressedCallback(true) {
override
fun handleOnBackPressed() {
// findNavController().popBackStack() // Popup to the first destination fragment
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
requireActivity().finishAndRemoveTask()
} else {
requireActivity().finish()
}
}
})
注意:您可以findNavController().popBackStack()在完成活動之前使用,如果您想在完成活動之前將回傳堆疊彈出到第一個目標片段,但這會在應用程式退出之前顯示第一個片段,這可能是一種不吸引您的行為.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/323364.html
標籤:安卓 android-fragments android-架构-导航
