所以firebase一直给我null指针异常,并且它在类’ChatModel’上找不到任何设置器/字段,这是我的chatModel类:
package edusolution.matrimony;
import java.util.HashMap;
import java.util.Map;
/**
* Created by el on 8/26/16.
*/
public class ChatModel
{
public Map<String,Object> message = new HashMap<>();
public String foruser;
public String foruserAnother;
public ChatModel()
{
}
public ChatModel(String foruser,String foruserAnother)
{
this.foruser = foruser;
this.foruserAnother = foruserAnother;
}
public String getForuser()
{
return foruser;
}
public void setForuser(String foruser)
{
this.foruser = foruser;
}
public String getForuserAnother()
{
return foruserAnother;
}
public void setForuserAnother(String foruserAnother)
{
this.foruserAnother = foruserAnother;
}
public Map<String, Object> getMessage()
{
return message;
}
public void setMessage(Map<String,Object> message)
{
this.message = message;
}
public Map<String,Object> toMap()
{
HashMap<String,Object> result = new HashMap<>();
message.put("somebody","iusedtoknow");
result.put("UserOne",foruser);
result.put("UserTwo",foruserAnother);
result.put("Messages",message);
return result;
}
}
附言:我试图使字段私有和一切,但没有用,这是我如何在数据库中创建chatmodel:
private void createChatModel (String Name,String currentUserName)
{
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
String Key = FirebaseDatabase.getInstance().getReference().child("chatRooms").push().getKey();
ChatModel chat = new ChatModel(Name,currentUserName);
Map<String,Object> postValues = chat.toMap();
Map<String,Object> childUpdates = new HashMap<>();
childUpdates.put("/chatRooms/"+Key,postValues);
database.updateChildren(childUpdates);
}
最后是我如何获取这些数据:
public void setupChat(final String username)
{
//check if chat room is already exists or not
databaseReference.child("chatRooms").addValueEventListener(new ValueEventListener()
{
public void onDataChange(DataSnapshot dataSnapshot)
{
for(DataSnapshot s : dataSnapshot.getChildren())
{
ChatModel chat = s.getValue(ChatModel.class);
if(chat != null )
{
Log.d("Key and hash : ",s.getKey()+" "+chat.getMessage().get(0));
if (chat.getForuser().equals(auth.getCurrentUser().getUid()) && chat.getForuserAnother().equals(username))
{
Log.d("Chat is ", s.getKey());
RoomName = new String(s.getKey());
ChatEnabled = true;
}
else if (chat.getForuser().equals(username) && chat.getForuserAnother().equals(auth.getCurrentUser().getUid()))
{
Log.d("chat is also ", s.getKey());
RoomName = new String(s.getKey());
ChatEnabled = true;
}
else
{
Log.d("No chat : ", "creating chat");
}
}
}
}
public void onCancelled(DatabaseError databaseError)
{
Toast.makeText(getApplicationContext(),"Unable to retrieve data",Toast.LENGTH_LONG).show();
}
});
}
示例数据,保存在firebasedatabase中,图片:保存的数据图片示例
最后的错误,我得到eveytime:
08-28 18:28:51.005 31762-31762/edusolution.matrimony W/ClassMapper: No setter/field for UserTwo found on class edusolution.matrimony.ChatModel
08-28 18:28:51.005 31762-31762/edusolution.matrimony W/ClassMapper: No setter/field for Messages found on class edusolution.matrimony.ChatModel
08-28 18:28:51.005 31762-31762/edusolution.matrimony W/ClassMapper: No setter/field for UserOne found on class edusolution.matrimony.ChatModel
08-28 18:28:51.005 31762-31762/edusolution.matrimony D/Key and hash :: -KQGYLHb2IQ34AHkzx5G null
08-28 18:28:51.005 31762-31762/edusolution.matrimony D/AndroidRuntime: Shutting down VM
08-28 18:28:51.005 31762-31762/edusolution.matrimony W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41919700)
08-28 18:28:51.012 31762-31762/edusolution.matrimony E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerExceptio
at edusolution.matrimony.Chat$1.onDataChange(Chat.java:70)
at com.google.android.gms.internal.zzaie.zza(Unknown Source)
at com.google.android.gms.internal.zzaje.zzcta(Unknown Source)
at com.google.android.gms.internal.zzajh$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
POJO类与数据库的结构不同。
将您的ChatModel
班级字段更改为
public class ChatModel {
public Map<String,Object> Messages = new HashMap<>();
public String UserOne;
public String UserTwo;
// constructor
// setter and getter
}
问题内容: 我有这样的课: 我从Firebase添加数据。 当我以调试方式运行该应用程序时,没有问题。但是在发布后,应用程序崩溃并显示以下错误: 我有 minifyEnabled是 真的 问题答案: 为了解决这个问题,您的类需要实现Serializable接口: 您还需要添加带有三个参数的构造函数。您的课程应如下所示: 如果日期是,它将具有服务器生成的时间戳。因此,您无需为其设置值。另请参见用于标
我正在尝试将Firebase Crashlytics集成到iOS我的应用程序中,该应用程序启用了Firebase Crash Reporting。我遵循了这里的文档,但在运行自定义构建阶段时,我的构建总是失败: Xcode中的错误如下: Fabric API键无效。Fabric运行脚本构建阶段应包含API密钥:./Fabric.framework/run INSERT_YOUR_API_KEY I
问题内容: 我的Ubuntu 10.04 i386服务器(无头)上有一个名为Hello的Android项目。它包含Android项目文件夹应具有的所有内容。我首先使用以下synax在Project文件夹中的bash中构建项目: 然后我尝试像这样用ant构建.apk: 我收到此错误: 这让我很困惑,因为在我跑步之前,我跑步: 我知道这是有效的,因为在bash shell中返回: 为了解决这个问题,请
问题内容: 我收到以下错误: MyClass不可用:找不到此类的Swift声明 但是我只有在Xcode中进行发布构建时才能得到它…调试效果很好。 有人知道怎么回事吗?我正在运行6.3 问题答案: 就我而言,这是因为我正在开发的框架缺少应用目标中列出的 有效架构 之一。我要做的只是以下几点: 转到项目文件。 转到您要 构建 的应用目标的“ 构建设置” 。请注意“ 有效架构”下列出的架构 。 转到失败
在遵循指南的“环境变量”步骤时,我将GRADLE_HOME设置为/PATH/to/gradle,并将/PATH/to/gradle/bin添加到~/.bashrc中的路径。 我在命令行中运行gradle-v,它会给我以下错误: 看起来缺少类路径,所以我将类路径变量设置为'.:path/to/gradle/lib/gradle-launcher-1.2.jar'并再次登录。它仍然不起作用... Th
我正在尝试运行我的React-native应用程序“Android”,但在我手动添加项目文件中的SDK路径之前,每次都是这样 local.properties RN错误 那我犯了什么错?