找不到适合ChatMessage的构造函数(String,String)

时间:2017-08-27 12:32:18

标签: java android firebase constructor

Error:(88, 79) error: no suitable constructor found for ChatMessage(String,String)
    constructor ChatMessage.ChatMessage(String,String,long) is not applicable
    (actual and formal argument lists differ in length)
    constructor ChatMessage.ChatMessage() is not applicable
    (actual and formal argument lists differ in length)

这是我的相关错误代码:

FirebaseDatabase.getInstance().getReference().push().setValue(new ChatMessage(input.getText().toString(), FirebaseAuth.getInstance().getCurrentUser().getEmail()));

与错误相关的ChatMessage构造函数:

public ChatMessage(String messageText, String messageUser, long messageTime) {
        this.messageText = messageText;
        this.messageUser = messageUser;

        messageTime = new Date().getTime();
    }

我关注了YouTube教程https://www.youtube.com/watch?v=Xn0tQHpMDnM,并且一些评论提到了相同的错误,但没有人收到回复。

2 个答案:

答案 0 :(得分:0)

您已使用三个参数定义了ChatMessage类的构造函数:

ChatMessage(String messageText, String messageUser, long messageTime)

要创建ChatMessage类的新对象,您需要不仅传递两个参数,正如我在您的代码中看到的那样,而是三个。因此,为了解决您的问题,请使用以下代码行:

FirebaseDatabase.getInstance().getReference()
     .push()
     .setValue(new ChatMessage(
          input.getText().toString(),
          FirebaseAuth.getInstance().getCurrentUser().getEmail(),
          null));

正如您可能看到的那样,我添加了最后一个参数null,因为您在ChatMessage类中创建了一个新的Date实例。

答案 1 :(得分:0)

您没有正确关注视频,或者您没有费心去查看see the source code的说明。

删除第三个参数。

public class ChatMessage {
    private String messageText;
    private String messageUser;
    private long messageTime;

    public ChatMessage(String messageText, String messageUser) {
        this.messageText = messageText;
        this.messageUser = messageUser;


        messageTime = new Date().getTime();

默认消息时间是'现在',自纪元以来的秒数

  

评论数量提到了相同的错误

我发现提到的错误与错误地使用getValue(ChatMessage.value)有关,而不是您的错误

如果您想拥有3个参数,那么您希望另外到之前的参数。

public ChatMessage(String messageText, String messageUser, long messageTime) {
    this.messageText = messageText;
    this.messageUser = messageUser;

    this.messageTime = messageTime
}