我的问题听起来很奇怪,但我会很快就我的观点。
我已经重构了一个项目,以将完整的东西转换为生命周期 导航(例如,使用ViewModel
和NavController
(。
在我的一个导航图中,用户签名,有一个Fragment
,其中有一个传统的EditText
,以便用户可以输入他所需的昵称。
问题:如果用户开始首先输入他的昵称,从而提示他的软键盘,则将用户导航到的任何下一个Fragment
(使用NavController#navigate
(,内容为空白:没有任何内容向上。
为了解决问题的根源,我进行了以下测试(使用吐司,断点等(:
- 在导航到
Fragment
✓;
时,检查 - 通过设置强背景颜色✓,检查目标片段的膨胀视图是否可见(从未见过颜色(;
- 在目标片段上使用
onGlobalLayout
夸大视图:有时,方法从未调用,但是当被调用时, height and width 均为 0 >。
onCreateView
和onAttached
方法是否会击中这样就这样了。键盘弹出后,任何导航的片段都将其视图高度和宽度设置为0。至少,任何导航都会导致onCreateView
调用。
注意:在揭示EditText的片段中,我使用:
quienteactivity((。getWindow((。setSoftInputmode( windowmanager.layoutparams.soft_input_adjust_pan(;
但删除此代码没有问题。
我正在使用版本: 2.1.0-Alpha05 (发布时最新(。我还尝试了稳定版本 2.0.0 ,但我也有同样的问题。
编辑1
没关系,似乎新的ConstraintLayout 2.0.0 beta 02
是罪魁祸首(带回收器视图引起了很多问题(,而新的后退导航机制https://developer.android.com/guide/guide/navigation/navigation/navigation/navigation-custom-back(开始使用AppCompat 1.1.0-alpha05
(在我的应用中引起其他问题。
我可以确认问题出现在2.0.0-beta2中,并且在androidx.constraintlayout中使用了2.0.0-beta3:beteraintlayout:benteraintlayout。就我而言,当我从带键盘的片段导航到另一个带有约束layout的片段时,即使我将其隐藏在以前的片段中并等待直到隐藏到它。