提问人:Muratcan Yıldız 提问时间:6/11/2022 最后编辑:Muratcan Yıldız 更新时间:6/12/2022 访问量:96
如果 getIntent 为 null,则 Firebase
If getIntent is null Firebase
问:
我在我的应用程序中使用 firebase 实时数据库。如果我使用 Intent 发送的数据为空,则应用程序将关闭。如果 intent 中的数据为空,如何连接数据库并拉取数据?
String post_title ;
post_title = getIntent().getExtras().get("post_title").toString();
txttitle.setText(post_title);
如果post_title为null,我希望它这样做:
databaseReference = FirebaseDatabase.getInstance().getReference().child("AllPost").child(PostKey);
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild("title")){
String title = dataSnapshot.child("title").getValue().toString();
txttitle.setText(title);
}
我试过这个:
if (post_title == null || post_title.isEmpty()) {
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.hasChild("title")) {
String title = snapshot.child("title").getValue().toString();
txttitle.setText(title);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
} else {
txttitle.setText(post_title);
}
答:
0赞
Tyler V
6/12/2022
#1
你的问题出在这一行
post_title = getIntent().getExtras().get("post_title").toString();
当“post_title”不存在时,返回 null。然后,由于调用了它,因此会收到 NullPointerException。您也可以在错误消息中看到这一点get("post_title")
toString()
Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object
解决此问题的方法是添加一些 null 检查,在中提取 post_title 以防止 1) 没有额外内容(Bundle 为 null)、2) 没有post_title条目,以及 3) 具有无法转换为字符串的 post_title 条目。
这看起来像:
String post_title = "";
Bundle b = getIntent().getExtras();
if( b != null ) {
post_title = b.getString("post_title");
}
if( post_title == null || post_title.isEmpty() ) {
// call firebase
}
else {
txttitle.setText(post_title);
}
或者,您可以只使用 ,它将在内部为您执行相同的检查,如果缺少 extras 或缺少 post_title 条目或不是 String,则返回 null。getStringExtra
String post_title = getIntent().getStringExtra("post_title");
if( post_title == null || post_title.isEmpty() ) {
// call firebase
}
else {
txttitle.setText(post_title);
}
评论
if (post_title == null || post_title.isEmpty()) { /* do firebase operations */}
edit