1

我有许多片段被添加(而不是替换)一个在另一个之上。他们也被添加到后面的堆栈中,除了第一个。

片段 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();
        }
4

1 回答 1

2

如果您使用的是 android 6.0.0,那么这是一个已知错误,它已在 6.0.1 中修复,请点击该链接了解更多详细信息: https ://issuetracker.google.com/issues/37069061

于 2017-10-23T12:45:42.273 回答