【发布时间】:2021-02-02 09:02:46
【问题描述】:
当我检查这个“a”变量是否为空时,我收到一条错误消息"java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()'"
“a”具有来自 firebase 数据库的数据“http://www.librarything.com/isbn/9780071792745”。
这是我的代码
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
List<String> wishlist_item = new ArrayList<String>();
for (DataSnapshot postSnapshot: snapshot.getChildren()) {
wishlist_item.add(postSnapshot.getValue().toString());
}
//list 1
if(wishlist_item.size()>=1){
L1.setOnClickListener(new View.OnClickListener() {
String a = wishlist_item.get(0);
@Override
public void onClick(View view) {
if(a.contains(null)){
Toast.makeText(wish_list.this, "Favourite is empty", Toast.LENGTH_SHORT).show();
}else{
Intent launchWish = new Intent(wish_list.this,web_view2.class);
launchWish.putExtra("k",a);
startActivity(launchWish);
}
}
});
}
我希望程序在“a”中没有数据时显示“收藏夹为空” 如何检查 a 是否为空?
【问题讨论】:
-
如果 a 是 String 类型,为什么不直接检查 a == null 呢?还是 a.length() == 0?
-
我都试过了,但如果“a”在数据库中没有数据,应用程序不会显示 makeText 消息“Favorite is empty”@tomerpacific。如果 a 为空,如何显示此消息?
-
您当前的条件是如果 a 包含 null 而不是 a 为 null。两者之间是有区别的。此外,您的外部 if 守卫检查 Wishlist_item 大小是否等于或大于 1。如果它为空,您可以在 else 部分显示您的消息。