Как отобразить текст из EditText? - PullRequest
0 голосов
/ 19 декабря 2011

Хорошо, я использую код:

EditText editText = (EditText) findViewById(R.id.editText1);
String value = editText.getText().toString();

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

Как это:

enter image description here

Ну, я пытался сделать это:

    EditText input = (EditText) findViewById(R.id.editText1);
    String thing = input.getText().toString();

    TextView display = (TextView) findViewById(R.id.textView1);
    String text = display.getText().toString();

    text.setText(thing);

Но я получаю сообщение об ошибке «Метод setText (String) для типа String не определен» в этой строке:

text.setText(thing);

Ответы [ 6 ]

1 голос
/ 19 декабря 2011

Для этого вам нужно получить текст из представления редактирования и установить представление текста: это - кусок пирога, использующий предопределенные методы получения и установки.

Вы должны раздувать представление текста, когда высделали для EditText, затем используйте метод .setText

Если текстовое представление находится в новом действии, вам нужно отправить информацию в намерении, например:

startActivity(new Intent(AndroidActivity.this, Activity2.class).putExtra("user", user.getText().toString()));

Затем в вашемновая активность может быть восстановлена ​​как

String s = getIntent().getStringExtra("user")
1 голос
/ 19 декабря 2011

Вы можете, например, установить слушатель изменения текста

Смотри, например, здесь, как добавить его в текст редактирования . Вместо рендеринга вы должны сделать textField.setText(text);

0 голосов
/ 26 декабря 2011

как мне заставить его отображаться с TextView?

Вот код, который обновит дисплей ( TextView , используемый в вашем примере) с содержимым input ( EditText используется в вашем примере) всякий раз, когда на клавиатуре нажимается кнопка ввода (я видел, что вы запрашивали это в комментарии к другому ответу):

    // get reference to the TextView
    final TextView display = (TextView) findViewById(R.id.textView1);

    // get reference to EditText and set listener to update TextView
    final EditText input = (EditText) findViewById(R.id.editText1);
    input.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                    (keyCode == KeyEvent.KEYCODE_ENTER)) {
                  display.setText(input.getText());
                  return true;
                }
                return false;
        }
    });

Код выше находится внутри одного действия.

Кроме того, как изменится код, если TextView находится в другом действии?

Если display ( TextView в вашем примере) находится в другом Activity, то одним из быстрых способов его обновления является сохранение значения input ( EditText в вашем примере) как SharedPreference и имеют display Activity's onResume , считываемое в значении:

// Activity with display
public class DisplayActivity extends Activity {
    private TextView display;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // get reference to the TextView
        display = (TextView) findViewById(R.id.textView1);
    }

    public void onResume() {
        super.onResume();
        String inputsValue = getSharedPreferences("myprefs", 0)
                .getString("input", "" /** Default value*/);

        display.setText(inputsValue);
    }
}

// Activity with input
public class InputActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // get reference to EditText and store in SharedPreference
        final EditText input = (EditText) findViewById(R.id.editText1);
        input.setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                        (keyCode == KeyEvent.KEYCODE_ENTER)) {
                      getSharedPreferences("myprefs", 0).edit()
                          .putString("input", input.getText().toString()).commit();
                      return true;
                }
                return false;
            }
        });
    }
}

Вы должны заменить все жестко закодированные строковые литералы в моем коде на кодовую константу

0 голосов
/ 24 декабря 2011

определяет обработчик события для текста редактирования, всякий раз, когда его текст изменяется, извлекайте его и выполняйте display.setText ()

Надеюсь, это поможет

0 голосов
/ 24 декабря 2011

для решения этой конкретной ошибки используйте

display.setText(thing);

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

0 голосов
/ 19 декабря 2011

Ответ на вопрос 1:

Используйте TextView.setText(CharSequence text, TextView.BufferType type), чтобы в текстовом представлении отображался нужный текст.

...