Android NavController with <dialog> 在导航前闪烁

Android NavController with <dialog> flashes before navigating

我有一个导航图,如下所示:

片段 1 -->(动作 A)--> DialogFragment 1 -->(动作 B)-->片段 2

执行操作 B 时,不幸的是我们没有直接直接切换到片段 2。相反,屏幕首先显示片段 1 一小会儿(0.1 秒左右),这对我的流程来说非常糟糕。

我正在使用 , with navigation-fragment version 2.1.0-rc01 中建议的功能,这是目前具有 <dialog> 功能的最稳定的版本。

TL;DR:覆盖 DialogFragmentdismiss() 函数:

public class MyDialogFragment extends DialogFragment {
    ...
    @Override
    public void dismiss() {
        getFragmentManager().executePendingTransactions();
        getView().post(() -> super.dismiss());
    }
}

这只是一个补丁,直到该功能被修复,它对我有用,请更新,特别是如果它不适合你。

问题是一些竞争:

  1. 片段 2 的片段事务(在 Navigation.java 中首先被正确调用,参见 NavDestination newDest = navigator.navigate(...,但在执行之前可能需要在循环队列中花费一些时间)

  1. 对话框 dismiss()(仅在之后正确调用,但首先发生)