Closed wflian closed 2 years ago
这是navigation的一个坑,我目前还没有发现有啥好的方法去支持这个业务,我建议你 将登陆页作为一个activity去写,登陆成功以后跳转到 main
这个场景不止这一个地方用吧!我觉得这种场景很常用呢
这种场景确实是比较常见的,但是目前navigation貌似不支持 从 fragmentA
跳转到 尚未创建的fragmentB
时关闭 fragmentA
,如果是 A ->B ->C C想跳转到A时关闭BC这个是支持的
可以用尝试popBackStack或navigateUp
findNavController().navigate( R.id.action_splashFragment_to_mainFragment, bundleOf(MainFragment.usernameKey to "Alex Gladkov"), navOptions { popUpTo(R.id.nav_graph_application) { inclusive = true } } 这种方式可以实现。 另外还有一个问题:一个Fragment启动自己本身 为啥没反应,启动失败
<fragment
android:id="@+id/testFragment"
android:name="com.test.testFragment"
android:label="TestFragment"
tools:layout="@layout/fragment_test"
>
<action
android:id="@+id/action_testFragment_self"
app:destination="@id/testFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />
</fragment>
直接在action里加入最后两句,可以实现跳转到目标页面,并关闭之前页面
<action '''''' app:destination="@id/mainFragment" .... app:popUpTo="@id/mainFragment" app:popUpToInclusive="true" />
比如登录页面 LoginFragment 里面的登录按钮,登录成功以后 打开 MainFragment 并关闭 LoginFragment。这情况如何实现呢?