Android - получить данные, как они поступают с внешней клавиатуры - PullRequest
1 голос
/ 04 января 2012

У меня есть планшетный сканер Bluetooth, подключенный к моему планшету.Всякий раз, когда я сканирую штрих-код, и основное внимание уделяется текстовому полю редактирования моего приложения, отсканированные данные появляются в тексте редактирования.

Я хочу получить эти данные одновременно, как они появляются в тексте редактирования.Я пытался использовать setOnClickListener, setOnKeyListener.Если кто-то знает, пожалуйста, дайте мне знать.

РЕДАКТИРОВАНИЕ: Шаги, которые я выполняю:

  1. В моей программе есть простой текст для редактирования, кнопка, текстовое поле.

  2. при сканировании штрих-кода через аппаратный ввод данные вставляются в текст редактирования моей программы.

  3. при нажатии кнопкикнопку, я копирую содержимое редактирования текста в текстовое поле.

Что я хочу, чтобы мое приложение делало:

Как только данные появляются в тексте редактирования, яхочу скопировать его в текстовое поле.Прямо сейчас я делаю это по нажатию кнопки.

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

public class SimpleTextBoxActivity extends Activity {</p> <pre><code>Button btnClear, btnPairedList, btnAvailableList, btnPairedAvailableList,btnShowScan; EditText edtSacnnedData; BroadcastReceiver brSent; TextView txtShowScannedData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edtSacnnedData=(EditText) findViewById(R.id.edtData); btnClear=(Button) findViewById(R.id.btnClear); btnShowScan=(Button) findViewById(R.id.btnScannedText); txtShowScannedData=(TextView) findViewById(R.id.txtScanData); Log.d("my", "b4 set visibility"); edtSacnnedData.setBackgroundColor(Color.BLACK); Log.d("my", "after set visibility"); btnClear.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { edtSacnnedData.setText(""); txtShowScannedData.setText(""); } }); btnShowScan.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String str=edtSacnnedData.getText().toString(); txtShowScannedData.setText(str); edtSacnnedData.setText(""); } }); } @Override protected void onDestroy() { super.onDestroy(); }

}

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Вам нужно использовать addTextChangedListener (..) может быть полезно для васВот ссылка для интересного обсуждения этого. Текст изменил слушателя

0 голосов
/ 04 января 2012

Дайте некоторые идентификаторы вашему дизайну пользовательского интерфейса и сделайте всю работу. Я показываю вам пример.

 EditText editText;
 TextView textView;

 editText = (EditText) findViewById(R.id.editText);
 textView = (TextView) findViewById(R.id.textView);

 editText.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            textView.setText(editText.getText().toString());

        }
    });

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

editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            textView.setText(editText.getText().toString());

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

Это всего лишь пример. Вы можете дать свои собственные идентификаторы и имена.

0 голосов
/ 04 января 2012

Попробуйте найти этот код editText.setText (data) в вашем классе.

Независимо от того, что будет в скобках для метода setText () этого editText, это ваши данные, и вы можете использовать его здесь,

Если мое предположение неверно, поделитесь кодом.

...