错误:将Drawable转换为片段内的位图

加密者

嗨,我正在从解析用户表中填充自定义列表视图。如果那行不包含图像,我想显示一个本地图像。为此,我需要将可绘制图像转换为片段内的位图。我尝试了几种方法。但是没有任何效果,我不知道这是什么错误。

我的代码是...

postImage = po.getParseFile("pic");
                            if (postImage != null && postImage.getUrl() != null && postImage.getUrl().length() > 0) {
                                postImage.getDataInBackground(new GetDataCallback() {
                                    @Override
                                    public void done(byte[] bytes, ParseException e) {
                                        Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
                                        people.setPic(bmp);
                                    }
                                });
                            } else {
                                Bitmap icon = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.sanjay);
                                Log.d("ImageCoversion", BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.sanjay).toString());
                                people.setPic(icon);
                            }

我在else块内的getActivity()。getResources()中遇到错误。

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.support.v4.app.FragmentActivity.getResources()' on a null object reference

我完整的doInBackground代码是

protected List<People> doInBackground(List<People>... params) {

        try {

            final ParseQuery<ParseUser> query = ParseUser.getQuery();
            query.findInBackground(new FindCallback<ParseUser>() {
                @Override
                public void done(List<ParseUser> objects, ParseException e) {
                    ParseFile image = null;

                    if (e == null) {

                        peopleList.clear();

                        obj = objects;
                        for (ParseObject po : objects) {

                            //image = (ParseFile) po.get("pic");
                            ParseFile postImage;

                            final People people = new People();

                            people.setName(po.getString("username"));
                            people.setLastMessage(po.getString("email"));
                            people.setObjectId(po.getObjectId());

                            //people.setProfilePic(image.getUrl());

                            postImage = po.getParseFile("pic");
                            if (postImage != null && postImage.getUrl() != null && postImage.getUrl().length() > 0) {
                                postImage.getDataInBackground(new GetDataCallback() {
                                    @Override
                                    public void done(byte[] bytes, ParseException e) {
                                        Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
                                        people.setPic(bmp);
                                    }
                                });
                            } else {
                                Bitmap icon = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.sanjay);
                                Log.d("ImageCoversion", icon.toString());
                                people.setPic(icon);

                            }
                            peopleList.add(people);
                        }
                    } else {
                        Log.d("*****Error", e.getMessage());
                    }
                }
            });

        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return peopleList;
    }
米兰娜·伊塔妮(Miriana Itani)

尝试Activity a = getActivity();在代码开头声明

在此,而不是: Bitmap icon = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.sanjay);

采用 : Bitmap icon = BitmapFactory.decodeResource(a.getResources(), R.drawable.sanjay);

有时getActivity()返回null。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章