繁体   English   中英

Android 导航添加到返回堆栈

[英]Android Navigation add to back stack

我尝试使用 Android 导航组件,但返回堆栈有问题。

我有片段 A、B。要从 A 导航到 B,我写:

Navigation.findNavController(view).navigate(R.id.a_to_b)

但是我怎样才能在点击后退按钮时返回到 A 呢?

片段 A 在您的后台堆栈中,因此您只需为您的按钮实现一个点击侦听器,例如,使用此解决方案

它提供了一个例子和一些解释:

新版本androidx.activity ver. 1.0.0-alpha07带来了一些变化

更多解释在android官方指南: Provide custom back navigation ```java public class MyFragment extends Fragment {

 @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // This callback will only be called when MyFragment is at least Started. OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) { @Override public void handleOnBackPressed() { // Handle the back button event } }; requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);

编码愉快!

众所周知,Nav 库应该负责从 backstack 本身推送和弹出。 我花了几个小时寻找缺失的一行,但我认为这可能有助于未来的 googlers,来自基本示例

<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_splash_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/launch_nav_graph"
tools:context=".launch.SplashActivity" />

如果你设置defaultNavHost ,你基本上需要自己处理 backstack。 此行对于自动将片段添加到返回堆栈至关重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM