[英]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.