1

我有一个顶部有一个 EditText 的活动和一个里面有一个 LinearLayout 的 ScrollView。

LinearLayout 在 onCreate 方法中填充一组动态视图,这些视图基于与初始 Intent 一起传递的对象。这通常是一组 EditText。

结果是一个 EditTexts 列表,每个 EditTexts 对应于不同的数据(并且正在编辑的数据集变化很大,因此需要像这样动态创建列表)。

问题是,当这些视图之一具有焦点并且方向发生变化时(例如用户翻转键盘进行输入),焦点会捕捉到 Activity 最顶部的 EditText。这肯定是不受欢迎的行为,因为用户在他/她翻出键盘时不打算在顶部的 EditText 中键入。

我怎样才能像这样动态地创建我的视图列表并且没有这种不良的焦点改变行为?

4

2 回答 2

1

结果我需要为我的每个动态 EditTexts 分配一个唯一且一致的 id。

活动无法正确保持焦点的原因是它没有办法重新定位视图,因为它没有 id。

于 2010-11-09T16:17:29.130 回答
-1

当方向改变发生时,onDestroy()被调用,并且该活动将再次使用创建onCreate()。这就是为什么在它找到的第一个 EditText 上捕捉焦点的原因。

您可能想看看这个:处理运行时更改

具体来说,本主题:在配置更改期间保留对象

于 2010-11-09T01:09:18.383 回答