我有一个活动,其中一个用户向另一个用户发送消息,我创建了一个onKey侦听器,以在用户按下Enter键时也发送消息。

当用户实际单击发送按钮时,一切正常,当用户按下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
码:

        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("")空消息。

07-26 07:19