Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建用户可以向另一个用户发送请求以进行个人聊天的活动_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 创建用户可以向另一个用户发送请求以进行个人聊天的活动

Java 创建用户可以向另一个用户发送请求以进行个人聊天的活动,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在尝试创建一个活动,其中一个用户可以向另一个用户发送个人聊天请求。当用户发送请求时,按钮上的文本应更改为“取消”,但它无法工作。有一个小小的逻辑问题,引起了很多麻烦。我在下面提供了包含错误的代码 rootref.child(currentUserid).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSna

我正在尝试创建一个活动,其中一个用户可以向另一个用户发送个人聊天请求。当用户发送请求时,按钮上的文本应更改为“取消”,但它无法工作。有一个小小的逻辑问题,引起了很多麻烦。我在下面提供了包含错误的代码

rootref.child(currentUserid).addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.hasChild(userid)){
            String request_type = dataSnapshot.child(userid).child("Request").getValue().toString();
            Toast.makeText(findFriend.this,request_type,Toast.LENGTH_SHORT).show();
            if (request_type.equals("sent")){
                findfriendviewholder.request.setText("Cancel");
                findfriendviewholder.currentState = "request_sent";
            }
        }else{
            if(!currentUserid.equals(userid)) {
                findfriendviewholder.request.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        findfriendviewholder.request.setEnabled(false);
                        if (findfriendviewholder.currentState.equals("new")){
                            rootref.child("Friends").child(currentUserid).child(userid).child("Request").setValue("sent")
                                    .addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {
                                            if (task.isSuccessful()){
                                                rootref.child("Friends").child(userid).child(currentUserid).child("Request").setValue("Recived").addOnCompleteListener(new OnCompleteListener<Void>() {
                                                    @Override
                                                    public void onComplete(@NonNull Task<Void> task) {
                                                        if (task.isSuccessful()){
                                                            findfriendviewholder.request.setEnabled(true);
                                                            findfriendviewholder.request.setText("Cancel");
                                                            findfriendviewholder.currentState = "reques_sent";
                                                        }
                                                    }
                                                });

                                            }
                                        }
                                    });
                        }
                    }
                });
            }else{
                findfriendviewholder.request.setVisibility(View.INVISIBLE);
            }
        }
    }
rootref.child(currentUserid).addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.hasChild(userid)){
字符串请求类型=dataSnapshot.child(userid).child(“请求”).getValue().toString();
Toast.makeText(findFriend.this,请求类型,Toast.LENGTH\u SHORT.show();
if(请求类型等于(“已发送”)){
findfriendviewholder.request.setText(“取消”);
findfriendviewholder.currentState=“已发送请求”;
}
}否则{
如果(!currentUserid.equals(userid)){
findfriendviewholder.request.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
findfriendviewholder.request.setEnabled(false);
if(findfriendviewholder.currentState.equals(“new”)){
rootref.child(“朋友”).child(当前用户ID).child(用户ID).child(“请求”).setValue(“已发送”)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
rootref.child(“朋友”).child(userid).child(currentUserid).child(“请求”).setValue(“接收”).addOnCompleteListener(新OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
findfriendviewholder.request.setEnabled(true);
findfriendviewholder.request.setText(“取消”);
findfriendviewholder.currentState=“请求已发送”;
}
}
});
}
}
});
}
}
});
}否则{
findfriendviewholder.request.setVisibility(View.INVISIBLE);
}
}
}

这不是答案,而是找到根本原因的方法

  • 尝试在每个任务之后调试或放置一些日志,并确定 任务成功-第一个、第二个请求
  • 检查是否所有子根名称都与配置的密钥匹配

  • 验证传递的userid、currentUserid是否没有空值或 错误值


  • 你在单词“收到”=收到的拼写错误。检查是否正确。

    如果你考虑在某个时间点尝试使用,在这里你可以找到一个关于如何创建完整和功能的教程。同时,请把你的数据库结构添加为JSON文件,或者至少作为屏幕截图。