button.PerformClick()导致文本清除

时间:2013-11-19 16:46:50

标签: java android

我有一个用户向另一个用户发送消息的活动,我创建了一个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 的代码:

        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();

            }

        }
    });

1 个答案:

答案 0 :(得分:2)

当用户点击按钮

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

然后你做

messageText.setText(""); 

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