Невозможно получить значение динамически созданного EditText

1

Привет, ребята Я создал некоторые EditTexts динамически из JSON со значением по умолчанию.

После ввода некоторых значений в EditTexts я обратился к ним с помощью метода getChildAt() корневого представления. При использовании метода getText() в EditText возвращается значение по умолчанию, а не измененное значение. Я даже не мог установить текст EditText через код.

Это мой метод создания EditText.

private static EditText createEditText(final Context context,
        Element element) {
    final EditText editText = new EditText(context);
    editText.setId(Integer.parseInt(element.getFieldID()));
    editText.setText(element.getCellValue());
    editText.setTag(element);
    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        public boolean onEditorAction(TextView v, int actionId,
                KeyEvent event) {
            if (event != null
                    && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                InputMethodManager inputMethodManager = (InputMethodManager) context
                        .getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMethodManager.hideSoftInputFromWindow(
                        editText.getApplicationWindowToken(),
                        InputMethodManager.HIDE_NOT_ALWAYS);
            }
            return false;
        }
    });

    return editText;
}

И вот как я обращаюсь к EditTexts после изменения текста.

public static boolean updateElements(ScrollView rootView) {
    try {
        for (int i = 0; i < rootView.getChildCount(); i++) {
            View view = rootView.getChildAt(i);
            if (view.getClass() == LinearLayout.class) {
                LinearLayout layout = (LinearLayout) view;
                for (int x = 0; x < layout.getChildCount(); x++) {

                    View linearView = layout.getChildAt(x);

                    if (linearView.getClass() == EditText.class) {
                        EditText txtBox = (EditText) linearView;

                        txtBox.setText("TextBox " + x);


                        }
                    }
                }
            }
        }

        return true;

    } catch (Exception ex) {
        ex.printStackTrace();
        return false;
    }
}

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

  • 0
    Уже попробовал. Возвращает значение, установленное при создании EditText. Не изменилось значение.
  • 0
    вы не можете использовать метод getChildAt () в linearView
Теги:
android-edittext

2 ответа

1
Лучший ответ

Наконец нашел проблему !!!

Я устанавливал корневой вид активности как в методе onCreate(), так и onResume(). И представление, которое передается updateElements (ScrollView rootView), представляет собой представление, созданное в методе onCreate(); но отображаемый фактический вид - это представление, созданное onResume().

Ошибка новобранец! В любом случае спасибо за помощь ребятам.

0

Попробуйте изменить

Object.getClass() == Class.class

в

Object.getClass().equals(Class.class)
  • 0
    Проблема не в этом. Я отлажен, и программа идет внутри оператора if . Проблема в том, что если я пытаюсь получить доступ к тексту, он возвращает значение по умолчанию, установленное при создании EditText. Не измененный текст.
  • 0
    Я даже не могу установить текст. Там нет ошибки. Но это не показано в представлении.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню