毕加索“目标不得为空”(使用Firebase数据库)

时间:2019-09-15 12:56:38

标签: java android firebase picasso

我通过链接创建了一个Firebase数据库(这些链接带有一些图像指向我的存储设备)

enter image description here

存储空间:

enter image description here

我尝试连接到数据库并例如通过按一个按钮获取 Page_1 的值

 private DatabaseReference mRef;

 button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mRef = FirebaseDatabase.getInstance().getReference().child("Chapters").child("Chapter 1").child("Page_1");

                mRef.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        String value = String.valueOf(dataSnapshot.getValue());

                        textView.setText(value);
                        Picasso.get().load(value).into(page_holder);
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

            }
        });

但是当我运行我的应用程序时,有一个例外,毕加索的那行说:

  

目标不能为空。

如果我删除毕加索,并且仅将Page_1的值放置到textView 中,它将显示正确的值(,这意味着我实际上得到了我的值并且它不为空

enter image description here

(对不起,黑色模式,我认为这些行可能包含重要的内容,例如数据库名称(很可能不是,但我是这样的菜鸟))

PS 我注意到的一件事是,当我将Page_1的值输入到TextView中时,就会出现一个小延迟。因此,我猜想毕加索正在尝试在加载之前获取“目标”。 我试图做一个类似Checker的东西

String value_from_database = textView.getText().toString();
    if (TextUtils.isEmpty(value_from_database)){
                       textView.setText("Image is loading|Doesn't exist");
                    }
                    else {
                        Picasso.get().load(value_from_database).into(page_holder);
                    }

但是我仍然失败。毕加索也显示出相同的异常/错误。

请告诉我如何解决?

2 个答案:

答案 0 :(得分:1)

错误提示:

  

“目标不能为空。”

这意味着在您的情况下,目标是page_holder,即null。这与您从数据库获取数据的代码无关,这是正确的。

要解决此问题,请确保初始化page_holder对象,使其不能为null,并且可以正确使用Picasso

答案 1 :(得分:0)

这意味着page_holder为空。