【问题标题】:How to retrieve image url form firebase database andriod如何从firebase数据库android中检索图像url
【发布时间】:2016-11-19 12:33:56
【问题描述】:

我正在开发一个使用 firebase 作为后端的 android 项目。我已将图像作为 url 存储在数据库中,并尝试使用 Picasso library 在应用程序中获取图像。但我无法检索图像表单数据库。下面是我的代码。

我用来获取数据的片段类:

public class McaFirstSemSylabus extends Fragment {

    public ImageView mcafirstsemsylbausimag;

    Syllabus sl;
    DatabaseReference loadmcafirstsylabus;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.activity_mca_first_sem_sylabus, container, false);
        loadmcafirstsylabus = FirebaseDatabase.getInstance().getReference().child("Syllabus").child("McaSyllabus").child("Firstsem");

        mcafirstsemsylbausimag = (ImageView) rootView.findViewById(R.id.mcasylabus_img);

         String img = sl.getImg();

        Picasso.with(getActivity().getApplicationContext()).load(img).into(mcafirstsemsylbausimag);
        return rootView;
    }
}

下面是由 getter 和 setter 组成的 POJO 类:

public class Syllabus {

    private String img;

    public String getImg() {
        return img;
    }

    public void setImg(String img) {
        this.img = img;
    }

    public Syllabus(){
    }

    public Syllabus(String image) {
        this.img = image;
    }
}

【问题讨论】:

  • 这里有什么问题? sl.getImg();处的 NullPointerException?
  • 是的,这是我的错误“Null pointerException”
  • 你明白这意味着什么吗?如何解决?请edit带logcat。
  • sl.getImg() 没有从 Firebase 获取 url,所以我不确定你为什么认为你需要 sl 变量

标签: android firebase nullpointerexception firebase-realtime-database picasso


【解决方案1】:

那是因为你的 Syllabus 对象是空的! 您必须为存储在该特定子项中的对象提供一个 ValueEventListener

 loadmcafirstsylabus.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override 
                public void onDataChange(DataSnapshot dataSnapshot) {
                //this retrives the java object you saved in that particular child
                sl = dataSnapshot.getValue(Syllabus.class);
                String img = sl.getImg();

                //rest of your code
                }

【讨论】:

  • 我尝试了上面的代码修改仍然出现空指针异常错误。
  • 抱歉以上评论。我清理了我的项目并再次运行代码正常工作非常感谢..
  • 酷!请注意,我使用了 addListenerForSingleValueEvent 以便上面的代码只运行一次,这取决于您可能想要使用 addValueEventListener 的需要,所以要小心
猜你喜欢
  • 2020-11-25
  • 2019-07-30
  • 2016-10-07
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多