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:覆盖 DialogFragment
的 dismiss()
函数:
public class MyDialogFragment extends DialogFragment {
...
@Override
public void dismiss() {
getFragmentManager().executePendingTransactions();
getView().post(() -> super.dismiss());
}
}
这只是一个补丁,直到该功能被修复,它对我有用,请更新,特别是如果它不适合你。
问题是一些竞争:
- 片段 2 的片段事务(在
Navigation.java
中首先被正确调用,参见 NavDestination newDest = navigator.navigate(...
,但在执行之前可能需要在循环队列中花费一些时间)
和
- 对话框
dismiss()
(仅在之后正确调用,但首先发生)
我有一个导航图,如下所示:
片段 1 -->(动作 A)--> DialogFragment 1 -->(动作 B)-->片段 2
执行操作 B 时,不幸的是我们没有直接直接切换到片段 2。相反,屏幕首先显示片段 1 一小会儿(0.1 秒左右),这对我的流程来说非常糟糕。
我正在使用 <dialog>
功能的最稳定的版本。
TL;DR:覆盖 DialogFragment
的 dismiss()
函数:
public class MyDialogFragment extends DialogFragment {
...
@Override
public void dismiss() {
getFragmentManager().executePendingTransactions();
getView().post(() -> super.dismiss());
}
}
这只是一个补丁,直到该功能被修复,它对我有用,请更新,特别是如果它不适合你。
问题是一些竞争:
- 片段 2 的片段事务(在
Navigation.java
中首先被正确调用,参见NavDestination newDest = navigator.navigate(...
,但在执行之前可能需要在循环队列中花费一些时间)
和
- 对话框
dismiss()
(仅在之后正确调用,但首先发生)