问题描述
当我检查这个“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”是否为空,其次,如果不是, 检查它是否具有空值,因此代码将如下所示:
if( (a==null) || (a!=null & a.isEmpty())){
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);
}
isEmpty() 在 java 6 及以上,如果 java 5 或以下,替换为 a.length()==0。
,最好检查一下 DataSnapshot 是否存在。如果它存在,请将您的项目添加到您的列表中。如果列表为空,则显示您的 Toast 消息。
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange (@NonNull DataSnapshot snapshot){
List<String> wishlist_item = new ArrayList<>();
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
if (postSnapshot.exists()) {
wishlist_item.add(postSnapshot.getValue().toString());
}
}
if (wishlist_item.isEmpty()) {
Toast.makeText(wish_list.this,Toast.LENGTH_SHORT).show();
} else {
L1.setOnClickListener(new View.OnClickListener() {
String a = wishlist_item.get(0);
@Override
public void onClick(View view) {
Intent launchWish = new Intent(wish_list.this,web_view2.class);
launchWish.putExtra("k",a);
startActivity(launchWish);
}
});
}