Android- получить данные, как они поступают с внешней клавиатуры
У меня есть планшетный сканер Bluetooth, подключенный к планшету. Всякий раз, когда я сканирую штрих-код и фокусируюсь на текстовом поле редактирования моего приложения, отсканированные данные появляются в тексте редактирования.
Я хочу взять эти данные одновременно, как это происходит в тексте редактирования. Я пытался использовать setOnClickListener
, setOnKeyListener
, Если кто-нибудь знает, пожалуйста, дайте мне знать.
Отредактированный: шаги, за которыми я следую:
моя программа имеет простое редактирование текста, кнопку, текстовое поле.
при сканировании штрих-кода через аппаратный ввод данные вставляются в текст редактирования моей программы.
по нажатию кнопки я копирую текстовое редактирование в текстовое поле.
Что я хочу, чтобы мое приложение делало:
Как только данные появятся в тексте редактирования, я хочу скопировать его в текстовое поле. Прямо сейчас я делаю это по нажатию кнопки.
Вот мой код: я сомневаюсь, что это полезно, потому что внешнее оборудование отображает данные в самом тексте редактирования.
public class SimpleTextBoxActivity extends Activity {
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 ответа
Вам нужно использовать addTextChangedListener(..) может быть полезным для вас. Вот ссылка для интересного обсуждения этого. Текст изменил слушателя
Попробуйте найти этот код editText.setText(data) в вашем классе.
Что бы ни было в ваших скобках метода setText() этого editText, это ваши данные, и вы можете использовать их здесь.
Если мое предположение неверно, пожалуйста, поделитесь своим кодом.
Дайте некоторые идентификаторы вашему дизайну пользовательского интерфейса и сделайте всю работу. Я показываю вам пример.
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
}
});
Это всего лишь пример. Вы можете дать свои собственные идентификаторы и имена.