【问题标题】:Hardware BACK Btn not working first time硬件返回按钮第一次不起作用
【发布时间】:2017-10-23 12:35:30
【问题描述】:

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

片段 A -> 片段 B -> 片段 C

当我在 Fragment B 上时,Hardware Back Btn press 工作正常,因此回到 Fragment A。 但是在片段 C 上,当我按下 Hardware Back Btn 时,第一次什么也没发生,我只得到以下日志:

W/IInputConnectionWrapper:finishComposingText 处于非活动状态 输入连接

在第二次尝试Hardware back Btn press后,在活动中调用onBackPressed(),Fragment C被弹出,Fragment B可见。

我在片段 C 的 TextInputLayout 中确实有一些编辑文本包装器,但不确定它们是如何导致这种行为的,如果有的话。

有人可以帮我弄清楚为什么在第一次硬件返回 Btn 按下 Fragment C onBackPressed() 时没有调用,只是上面的警告?

谢谢

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

【问题讨论】:

  • 是否存在键盘或其他可能消耗“onBackPressed”事件的东西?
  • 不可见。即使它是可见的,不会调用 onKeyDown() 吗?即使那样也不叫。
  • 可以分享一下Fragment C的代码吗?
  • 发布要替换片段的活动代码。
  • 添加片段的代码

标签: android android-fragments onbackpressed fragment-backstack inputconnection


【解决方案1】:

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

【讨论】:

  • 你确定这是同一个问题吗?我在 API 级别 25 上仍然看到问题
  • @Sunny bro 按照上面提供的链接查看更多详细信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 2016-12-31
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 2017-10-21
相关资源
最近更新 更多