我有一个用EditTexts填充的ListView。它们在启动时不可聚焦,但用户可以在长按ListView项目(相应的ListView)后进入“编辑模式”。 第一个奇怪的事情是第一次长时间点击发生时。 EditText获得焦点,但键盘不会出现。需要点击EditText才能最终显示。在此之后,长按其他列表项,将出现键盘。我设法观察到的内部行为的唯一区别是,在第一种情况下,onClick事件不会触发EditText,而在第二种情况下它会触发。
但最令人沮丧的事情发生在我编辑几个项目时,在这里滚动,再编辑几个,突然我最终在一个没有显示键盘的焦点EditText中,没有任何方法再次使用键盘EditText,点击没有帮助。 我试着在我的apadter中非常小心,然后保存EditText状态并在getView方法的ListView适配器中重新创建它。
有关如何调试此内容的任何建议?也许,有人可以解释键盘决定如何显示,以及如果可能的话如何调试此事件。
答案 0 :(得分:1)
我已经找到了一个非常好的解释,在这里调用requestFocus()调用: Android Actionbar Tabs and Keyboard Focus 有几个词:当你调用requestFocus()(或者由于布局中的xml设置调用它)时,整个视图树还没有布局,你的视图会认为它有焦点,但事实上它可能没有。 一种解决方案是在视图上调用post(Runnable),或者在布局完成后调用它的父级来请求焦点。