【问题标题】:Edittext loses focus when doing work on other threadEdittext 在其他线程上工作时失去焦点
【发布时间】: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


    【解决方案1】:

    你试过了吗

    messageEdTxt.requestFocus();
    

    点击发送按钮

    【讨论】:

    • 是的,我试过了。每次我用“write()”发送东西时,焦点都会消失,即使我正在打字。
    • 在后台每分钟 write() 被调用,然后 edittext 失去焦点。
    • 您能否提供解决此问题的有效代码?我对在“write()”方法中调用“finish()”方法有疑问。
    • 我已经有意更改了finish()。但是你需要什么代码?我发布了所有相关的。
    • 我无法理解。当您调用 finish() 时,通常您的应用程序应该隐藏。但是您提到,只有编辑文本才会失去焦点。这很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多