我有许多片段被添加(而不是替换)一个在另一个之上。他们也被添加到后面的堆栈中,除了第一个。
片段 A -> 片段 B -> 片段 C
当我在 Fragment B 上时,Hardware Back Btn press 工作正常,因此返回到 Fragment A。但是在 Fragment C 上,当我按下 Hardware Back Btn 时,第一次没有任何反应,我只得到以下日志:
W/IInputConnectionWrapper:非活动 InputConnection 上的 finishComposingText
之后,在第二次尝试 Hardware back Btn press 时,在活动中调用 onBackPressed() 并弹出 Fragment C 并且 Fragment B 可见。
我在 Fragment C 的 TextInputLayout 中确实有一些编辑文本包装器,但不确定它们是如何导致这种行为的,如果有的话。
有人可以帮我弄清楚为什么没有调用片段 C onBackPressed() 中的第一次硬件返回 Btn 按下,而只是上面的警告?
谢谢
private void navigateToFragment(@NonNull Fragment fragment, boolean addToBackStack, int enterAnim, int exitAnim, int popEnterAnim, int popExitAnim) {
FragmentManager fragmentManager = getSupportFragmentManager();
final FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setCustomAnimations(enterAnim, exitAnim, popEnterAnim, popExitAnim);
transaction.add(R.id.member_address_root, fragment, fragment.getClass().getSimpleName());
if (addToBackStack){
transaction.addToBackStack(fragment.getTag());
}
transaction.commit();
}