2

类似的问题已经出现了好几次,但我发现了我认为不应该出现的奇怪规律。

它的布局中有Activitywith EditText。当用户单击该字段时,会出现软输入。将标志android:windowSoftInputMode="stateUnchanged"添加到AndroidManifest后,设备方向更改时一切正常 - 键盘保持其状态。但是,当在此Fragment之上ActivityEditText位于其中时,Fragment它就不起作用了。我假设AndroidManifest在这种情况下会跳过标志(仅标志覆盖Activity),并且在方向更改期间键盘消失。

我没有找到在方向更改时保留键盘状态的干净解决方案。我看到了手动显示键盘的解决方案onActivityCreated(),但我不喜欢它,因为它需要在对象中的某些变量上保持键盘可见性状态,这些变量在方向变化后仍然存在。我发现如果有EditTextActivity即使用户没有触摸它,并且它没有聚焦,键盘仍保持其状态,这是完全出乎意料的。

我无法删除Fragment并仅依赖于. 但是我已经检查过,当直接附加到.ActivityFragmentsViewPagerFragmentActivity

我还发现我检查过的所有应用程序都以某种方式解决了这个问题。

是否有一个干净的解决方案可以在片段的方向更改时保留键盘状态?

编辑:我也不喜欢这个android:configChanges="orientation|screenSize"选项。

4

1 回答 1

0

尝试将此行添加到清单中的活动

android:configChanges="方向"

它并不完美,但你可以试试

于 2017-06-02T16:37:21.473 回答