【发布时间】: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