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);
}
}
}
这不是答案,而是找到根本原因的方法
你在单词“收到”=收到的拼写错误。检查是否正确。如果你考虑在某个时间点尝试使用,在这里你可以找到一个关于如何创建完整和功能的教程。同时,请把你的数据库结构添加为JSON文件,或者至少作为屏幕截图。