gpt4 book ai didi

java - 在我的 android 项目中遇到 nullPointerExecption

转载 作者:行者123 更新时间:2023-12-02 09:50:31 25 4
gpt4 key购买 nike

嗨,我正在尝试制作一个聊天应用程序。在此过程中,我尝试检索存储在数据库中的消息,但我收到空对象引用异常。

我用来向数据库添加消息的代码是:

    img_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {


String msg = text_send.getText().toString();
if(!msg.equals(""))
sendMessage(fuser.getUid(), currUserId, msg);
else
Toast.makeText(MessageActivity.this, "Enter Something",
Toast.LENGTH_SHORT).show();
}
});


private void sendMessage(String sender,String receiver,String message)
{
DatabaseReference reference =
FirebaseDatabase.getInstance().getReference();
HashMap<String,Object>hashMap = new HashMap<>();
hashMap.put("sender",sender);
hashMap.put("receiver",receiver);
hashMap.put("message",message);

reference.child("Chats").push().setValue(hashMap);

}

注意:上面的代码部分工作正常。每次发送消息时,我的数据库都会正确更新。

在这部分之后,我尝试使用以下代码显示用户的消息

     DatabaseReference chatref = 
FirebaseDatabase.getInstance().getReference().child("Chats");
ArrayList<String> userchats = new ArrayList<>();

listView = findViewById(R.id.listView);
final ArrayAdapter <String> arrayAdapter = new ArrayAdapter<String>
(this,android.R.layout.simple_list_item_1,userchats);
listView.setAdapter(arrayAdapter);

chatref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {

String value = dataSnapshot.getValue().toString();
try {
JSONObject object = new JSONObject(value);
message = object.getString("message");
}
catch (JSONException e) {
e.printStackTrace();
}
userchats.add(message);
arrayAdapter.notifyDataSetChanged();
}

@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {

}

@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

}

@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

当我此时运行应用程序时,我收到错误,我的堆栈跟踪如下:

         Process: com.kcw.firebasebasics, PID: 10943
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object
reference at android.widget.ArrayAdapter.
createViewFromResource(ArrayAdapter.java:401)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)
at android.widget.AbsListView.obtainView(AbsListView.java:2346)
at android.widget.ListView.makeAndAddView(ListView.java:1875)

最后是我的数据库的图片:

picture of database

最佳答案

更改此:

String value = dataSnapshot.getValue().toString();

进入此:

String value = dataSnapshot.child("message").getValue(String.class);

关于java - 在我的 android 项目中遇到 nullPointerExecption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56349838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com