Как сохранить динамические просмотры в фокусе с помощью изменения ориентации в Android? - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть действие с EditText сверху и ScrollView с LinearLayout внутри него.

LinearLayout заполняется в методе onCreate набором динамических представлений на основе объекта, переданного с инициирующим намерением. Обычно это набор EditTexts.

Результатом является список EditTexts, каждый из которых соответствует отдельному фрагменту данных (и редактируемый набор данных довольно изменчив, поэтому список необходимо создавать динамически, как это).

Проблема в том, что когда одно из этих представлений имеет фокус, а ориентация меняется (скажем, пользователь нажимает на клавиатуру, чтобы набрать текст), фокус привязывается к EditText в самом верху действия. Это, безусловно, нежелательное поведение, поскольку пользователь не намеревался вводить верхний текст EditText, когда он / она щелкает клавиатуру.

Как я могу динамически создавать свой список представлений, подобных этому, и не иметь такого нежелательного поведения при изменении фокуса?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2010

Оказывается, мне нужно было назначить уникальный и непротиворечивый идентификатор каждому из моих динамических EditTexts.

Причина, по которой деятельность не смогла правильно удержать фокус, заключается в том, что у нее не было способа переместить представление, потому что оно не имелоID.

0 голосов
/ 09 ноября 2010

Когда происходит изменение ориентации, вызывается onDestroy(), и действие будет создано снова с использованием onCreate(). Вот почему фокус перехватывается при первом найденном им EditText.

Возможно, вы захотите взглянуть на это: Обработка изменений времени выполнения .

В частности, эта тема: Сохранение объекта во время изменения конфигурации

...