java - button.PerformClick() 导致文本被清除

标签 java android

我有一个 Activity ,其中一个用户向另一个用户发送消息,我创建了一个 onKey 监听器,以便在用户按下 Enter 时发送消息。

当用户实际单击发送按钮时,一切正常,当用户按下回车按钮时,会发送一条空白消息。

这是onkeylistener代码 代码:

        messageText.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == 66) {
                sendMessageButton.performClick();
                return true;
            }
            return false;
        }

    });

这是发送消息按钮 代码:

        sendMessageButton.setOnClickListener(new OnClickListener() {
        CharSequence message;
        Handler handler = new Handler();

        @Override
        public void onClick(View arg0) {
            // android.text.format.DateFormat df = new
            // android.text.format.DateFormat();
            message = messageText.getText();
            String messageSent = DateFormat.format("dd MMM yy, kk:mm",
                    new java.util.Date()).toString();// java.text.DateFormat.getDateTimeInstance().format("yyyy-MM-dd kk:mm:ss");

            if (message.length() > 0) {

                appendToMessageHistory(imService.getUsername(),
                        message.toString(), messageSent);
                ((ScrollView) findViewById(R.id.scrollView))
                        .fullScroll(View.FOCUS_DOWN);
                localstoragehandler.insert(imService.getUsername(),
                        friend.userName, message.toString(), messageSent);

                messageText.setText("");
                Thread thread = new Thread() {
                    @Override
                    public void run() {
                        try {
                            if (imService.sendMessage(
                                    imService.getUsername(),
                                    friend.userName, message.toString()) == null) {

                                handler.post(new Runnable() {

                                    @Override
                                    public void run() {

                                        Toast.makeText(
                                                getApplicationContext(),
                                                R.string.message_cannot_be_sent,
                                                Toast.LENGTH_LONG).show();

                                        // showDialog(MESSAGE_CANNOT_BE_SENT);
                                    }

                                });
                            }
                        } catch (UnsupportedEncodingException e) {
                            Toast.makeText(getApplicationContext(),
                                    R.string.message_cannot_be_sent,
                                    Toast.LENGTH_LONG).show();

                            e.printStackTrace();
                        }
                    }
                };
                thread.start();

            }

        }
    });

最佳答案

当用户点击按钮时

message = messageText.getText();// get message

那你就这样做

messageText.setText(""); 

因此,当用户按下 onKey 中的 Enter 按钮时,您会发送 sendMessageButton.performClick() 一条空白消息,因为您已经设置了 messageText.setText("”)

关于java - button.PerformClick() 导致文本被清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20077211/

相关文章:

java - qpid如何配置接收器

java - 您可以在没有任何输入字段的情况下触发 keyTyped() 函数吗?

android - Espresso - 检查 ListView 中是否存在 TextView

android - 如何使 BasicTextField 上的光标以 jetpack compose 为中心?

java - 构建 Froyo 失败 - make : *** [. ../classes.dex] 被杀死

java - JTextField 中奇怪的 unicode 行为

java - 是否可以使用 JavaFx 创建 Java 小程序?

Java:从数组切片中查找最大值的索引

c# - 如何在 Android Image Gallery 中保存从 unity 拍摄的照片?

java - 适配器上的 arraylist.remove() 删除 ListView 中的错误项目