Обновлять TextView при каждом нажатии клавиши - PullRequest
0 голосов
/ 24 июня 2011

То, что я пытаюсь сделать, это обновлять TextView с каждым ключевым событием - в основном, копируя содержимое EditText в TextView.По какой-то причине это не работает.Вот код:

    View.OnKeyListener keyHandler = new OnKeyListener(){

        public boolean onKey(View v, int keyCode, KeyEvent event) {
            TextView id = (TextView)findViewById(R.id.previewEmplIdData);
            TextView fn = (TextView)findViewById(R.id.previewNameData);
            TextView ttl = (TextView)findViewById(R.id.previewTitleData);
            TextView mgr = (TextView)findViewById(R.id.previewMgrData);
            TextView loc = (TextView)findViewById(R.id.previewLocData);
            TextView strt = (TextView)findViewById(R.id.previewStartData);
            String text = "";
            EditText et;
            switch(v.getId()){
            case R.id.etFirstName:
                et = (EditText)v; // must first switch to a text field
                text = et.getText().toString();
                fn.setText(text);
                break;
            case R.id.etLastName:
                et = (EditText)v;
                text = et.getText().toString();
                break;
            case R.id.etEmplId:
                et = (EditText)v;
                text = et.getText().toString();
                id.setText(text);
                break;
            case R.id.etStartDate:
                et = (EditText)v;
                text = et.getText().toString();
                strt.setText(text);
                break;
            case R.id.etTitle:
                et = (EditText)v;
                text = et.getText().toString();
                ttl.setText(text);
                break;
            case R.id.spinnerLocation:
                break;
            case R.id.spinnerManager:
                break;
            }
            return false;
        }
    };

В основном я переключаюсь с помощью идентификатора View на нажатие клавиши, а затем преобразую представление в EditText.Я не совсем уверен, почему это не работает ... Мне всегда не везло с тем, чтобы операторы switch работали.Любая помощь, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 24 июня 2011

OnKeyListener не работает с программной клавиатурой.Вы должны реализовать TextWatcher для отслеживания изменений текста.Также посмотрите здесь .

2 голосов
/ 24 июня 2011

Где вы применяете это keyHandler?Если вы только что создали и инициализировали его, но не использовали ни в одном представлении, он вообще не будет работать.

0 голосов
/ 09 августа 2015

Я только что решил эту проблему, используя следующее:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class InputField extends AppCompatActivity {

private EditText input;
private TextView displayString;
private String writeText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_input_field);

    input = (EditText) findViewById(R.id.editText);
    displayString = (TextView) findViewById(R.id.displayStringText);

    input.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}

        @Override
        public void afterTextChanged(Editable s) {
            writeText = input.getText().toString();
            displayString.setText(writeText);
        }
    });

  }
}
...