A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1黑马币
一个已经工作的同学,在使用Fresco这个强大的图片处理框架的时候,加载错误
Error inflating class com.facebook.drawee.view.SimpleDraweeView
android.view.InflateException: Binary XML file line #14: Error inflating class com.facebook.drawee.view.SimpleDraweeView
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.NullPointerException
            at com.facebook.drawee.view.DraweeView.setImageDrawable(DraweeView.java:140)


这里的问题在XML中使用了一个自定义控件com.facebook.drawee.view.SimpleDraweeView
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:fresco="http://schemas.android.com/apk/res-auto"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:orientation="vertical" >

  6.     <com.facebook.drawee.view.SimpleDraweeView
  7.         android:id="@+id/my_image_view"
  8.         android:layout_width="20dp"
  9.         android:layout_height="20dp"
  10.         fresco:placeholderImage="@drawable/my_drawable" />

  11. </LinearLayout>
复制代码


异常信息说,在加载xml文件的时候,不能inflating出SimpleDraweeView对象
我们再来看看activity是在哪里加载xml的,SimpleDraweeView又是在哪里初始化的
  1. protected void onCreate(Bundle savedInstanceState) {
  2.                 super.onCreate(savedInstanceState);
  3.                 setContentView(R.layout.activity_main);
  4.                 Fresco.initialize(this);
  5.                 Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/fresco-logo.png");
  6.                 SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
  7.                 draweeView.setImageURI(uri);

  8.         }
复制代码

可以看到我们是在setContentView(R.layout.activity_main);代码去加载xml对象的
然后再初始化Fresco.initialize(this);对象

所以我们只需要把Fresco.initialize(this);这个初始化后,然后再使用这个框架的自定义控件,就不会报错了
xml文件无需该
activity修改成:
  1. protected void onCreate(Bundle savedInstanceState) {
  2.                 super.onCreate(savedInstanceState);
  3.                 Fresco.initialize(this);
  4.                 setContentView(R.layout.activity_main);
  5.                 Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/fresco-logo.png");
  6.                 SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
  7.                 draweeView.setImageURI(uri);

  8.         }
复制代码




1 个回复

倒序浏览
66666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马