解析 com.facebook.drawee.view.SimpleDraweeView 类时出错

8

我正在尝试使用Fresco库。我以前也用过它,它可以正常工作,但是现在由于某些原因,我遇到了以下问题:

Unable to start activity ComponentInfo{com.example.home.template/com.example.home.template.MainActivity}: android.view.InflateException: Binary XML file line #26: Error inflating class com.facebook.drawee.view.SimpleDraweeView

我的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:fresco="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">


<com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/profileImage"
        fresco:actualImageScaleType="centerCrop"
        android:layout_width="200dp"
        android:layout_gravity="center_horizontal"
        android:layout_height="200dp" />
</LinearLayout>

我的应用程序:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(this);
    }
}

我在清单文件中有这个: android:name=".MyApplication" 我遇到的唯一问题是使用draweeview。我可以完成其他操作,如登录和获取信息。

你是否正在使用 fresco 库? - Mounir Elfassi
6个回答

23
在我的情况下,在setContentView(R.layout.myxml);之前写上Fresco.initialize(this);有帮助。
更新: 在你的myapplication中,使用FacebookSdk.sdkInitialize(this);代替Fresco.initialize(this)

我也尝试过那个方法,但它并没有起作用。现在你可以看到,我已经按照这里的建议(https://github.com/facebook/fresco/issues/74)将其放在了MyApplication中。 - Bogdan Daniel
在你的MyApplication中,你应该使用FacebookSdk.sdkInitialize(this)而不是Fresco.initialize(this) - Mounir Elfassi
是的,它正在工作。我应该保留两个还是只保留一个? - Bogdan Daniel
只需要 Fresco.initialize(this) 即可。 - Mounir Elfassi

4

我在 API 19 设备上遇到了这个问题,原因是我在此处使用了可绘矢量作为占位符。

fresco:placeholderImage="@drawable/ic_phone"

将格式更改为PNG后,我的问题得到了解决。

别忘了在你的应用程序中进行初始化,如下所示:

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        Fresco.initialize(this)
    }
}

还有在清单文件的应用程序中的这一行

android:name=".App"

2
今天我遇到了同样的问题。然而,我忘记在AndroidManifest.xml中添加属性android:name=".MyApplication"

0

请确保导入正确的Fresco库,如果您导入其他Fresco库,请确保其他库的版本号与Fresco核心库相同


0
在我的情况下,写上 Fresco.initialize(this);
在之前。

setContentView(R.layout.activity_main);


0
在你的Application类中写入以下行:
Fresco.initialize(this);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接