2014-11-16 3 views
0

Я пытаюсь установить текст на EditText в коде, но получить следующее сообщение об ошибке: -Android Ошибки при установке текста на EditText

java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.EditText

У меня есть несколько правок текстов, которые правильно SetText, это один находится на LinearLayout вложенных в родительский LinearLayout. Так что у меня

LinearLayout1 
    EditText1 >- Set text works ok 
     Nested LinearLayout2 
      EditText2 >- Find elements works ok but setText fails with the error above. 

Я попытался установить цель, как LinerLayout1 и 2 (с является индексом в цикле детей)

Код snipit выглядит следующим образом: -

View tmp = target.getChildAt(c); 
EditText et = (EditText) target.getChildAt(c); 
//et correctly resolves as the correct EditText 
String s = "[some value]"; 
et.setText(s); << this throws the above error 

ответ

0

есть вы пытались использовать?

EditText et = (EditText) (EditText) this 
      .findViewById(R.id.EditText2); 

, имея в своем layoutfile

<EditText android:id="@+EditText2/" .../> 

если вы используете

 int c=5; 
    this.getChildAt(c); 

вы получаете 5-elemenet в curent макет hirarchy. , который также может работать, но довольно необычен и хрупок. если вы позже измените макет, вы также должны обновить код .

+0

Все мои представления создаются динамически, поэтому идентификатор неизвестен. Используется getChildAt (c), потому что я уже зациклил элементы управления, чтобы найти тот, который я хочу обновить, и этот индекс находится в индексе (c). Я пробовал приведенный выше код с теми же результатами, опять же, и правильно разрешает EditText, при отладке я могу правильно видеть свойства, такие как текст подсказки, но как только я пытаюсь setText, он вызывает ту же ошибку. – OB1