0

我有一个顶部有EditText的活动,里面有一个带有LinearLayout的ScrollView。如何通过Android中的方向更改保持动态视图的重点?

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

结果是EditText的列表,每个EditText对应不同的数据(并且被编辑的数据集是相当可变的,所以列表需要像这样动态创建)。

问题是,当其中一个视图具有焦点并且方向更改(例如用户将键盘翻转为键入)时,焦点将捕捉到活动最顶部的EditText。这肯定是不受欢迎的行为,因为用户在打翻键盘时不打算输入顶部的EditText。

我该如何动态创建像这样的视图列表并且没有这种不需要的焦点更改行为?

回答

0

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

你可能想看看这个:Handling Runtime changes

具体地说,本主题:Retain an object during configuration change

+0

是的,我了解生命周期的基础知识。但是如果没有我的动态视图,焦点会自动保留在活动中。我试图理解为什么这种行为不适用于我的动态视图以及如何模仿它。 – CodeFusionMobile 2010-11-09 04:21:16

0

原来我需要一个独特的和一致的ID分配给我的每一个动态EditTexts的。

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

相关问题