【发布时间】:2019-12-13 19:02:05
【问题描述】:
我正在制作一个通过蓝牙将数据发送到 HC-06 的应用程序。当我在 EditText 中键入内容并按发送时,EditText 失去焦点。我发现这是因为我用 write() 调用了一个后台线程。
如何保持专注?
messageEdTxt = findViewById(R.id.message_edtxt);
messageEdTxt.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEND) {
String messageEdtxt = messageEdTxt.getText().toString();
messageEdTxt.setText("");
write(messageEdtxt);
return true;
} else {
return false;
}
}
});
sendBtn = findViewById(R.id.send_btn);
sendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String messageEdtxt = messageEdTxt.getText().toString();
write(messageEdtxt);
messageEdTxt.setText("");
}
});
mConnectedThread 是用于发送消息的自定义线程。
private void write(String message) {
if (mSocket.isConnected()) {
if (mConnectedThread != null) {
mConnectedThread.write(message.getBytes(StandardCharsets.UTF_8));
} else {
finish();
}
} else {
finish();
}
}
【问题讨论】:
标签: android android-edittext android-bluetooth background-thread lost-focus