【问题标题】:How can I show makeText text if variable is empty如果变量为空,如何显示 makeText 文本
【发布时间】: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 部分显示您的消息。

标签: java android database


【解决方案1】:

首先,您必须验证变量“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。

【讨论】:

  • 先生它不起作用仍然没有 makeText "Favourite is empty" @Hicham
【解决方案2】:

最好检查 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, "Favourite is empty", 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);
                    }
                });
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多