Связь между редактируемыми объектами и текстовым атрибутом EditText - PullRequest
0 голосов
/ 13 ноября 2018

Приложение, которое я создал, просто показывает, что пользователи набрали в EditText.

Это onCreate метод его MainActivity:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText input = (EditText) findViewById(R.id.input);
    final TextView output = (TextView) findViewById(R.id.output);

    final Editable input_editable = (Editable) input.getText();

    final Button show = (Button) findViewById(R.id.show);
    final Button reset = (Button) findViewById(R.id.reset);


    show.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String text = input_editable.toString();
            output.setText(text);
        }
    });


    reset.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            input_editable.clear();
        }
    });
   }       

Проблема в следующем:

Когда я запускаю приложение, все работает нормально:

  • Я набираю, например, "foo" и нажимаю кнопку "показать", она показывает "foo",
  • Когда я нажимаю "сбросить", все сбрасывается,
  • Повторите «бар», затем он показывает «бар».Отлично!

Но когда я просто изменяю строку

input_editable.clear();

на эту

input.setText("");

, то это происходит после запуска приложения:

  • Я набираю, например, "foo" и нажимаю кнопку "показать", она показывает "foo",
  • Когда я нажимаю "сбросить", все кажется сброшенным,
  • Повторно введите «bar», затем «foo» все еще остается после нажатия «show»

Почему?

Спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

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

просто попробуйте это:

show.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String text = input.getEditableText().toString();
                textView.setText(text);
            }
        });

каждый раз, когда инициализируете ссылку здесь, вы получите ожидаемый результат при ее применении:

input.setText("");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...