如果变量为空,如何显示 makeText 文本

问题描述

当我检查这个“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);
                    }
                });
            }