Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Glide上的getDrawable方法中获取NullPointerException_Android_Nullpointerexception_Imageview_Android Glide - Fatal编程技术网

Android 在Glide上的getDrawable方法中获取NullPointerException

Android 在Glide上的getDrawable方法中获取NullPointerException,android,nullpointerexception,imageview,android-glide,Android,Nullpointerexception,Imageview,Android Glide,我有一个图像视图,我想得到它的位图 这是我的密码: 设置imageview: ImageView imageView; imageView = findViewById(R.id.image_wallpaper); Glide.with(this).load(current_image.getImageURL()).into(imageView); 获取位图: setButton.setOnClickListener(new View.OnClickListener() { publ

我有一个图像视图,我想得到它的位图

这是我的密码:

设置imageview:

ImageView imageView;
imageView =  findViewById(R.id.image_wallpaper);
Glide.with(this).load(current_image.getImageURL()).into(imageView);
获取位图:

setButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {
        DisplayMetrics metrics = new DisplayMetrics();

        imageView.invalidate();  // I get the crash with or without that line
        Bitmap mBitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();  // CRASH HERE

        // more things using the mBitmap

    }
});
崩溃日志:

Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
com.XXXX.XXXXXXX.ImageActivity$4.onClick (ImageActivity.java:170)
android.view.View.performClick (View.java:5246)
android.view.View$PerformClick.run (View.java:21200)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:145)
android.app.ActivityThread.main (ActivityThread.java:6946)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1404)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199)      
我使用的是Glide的最新版本:

implementation 'com.github.bumptech.glide:glide:4.9.0'                   // glide
这个崩溃日志来自Firebase Crashlytics,很多用户都会收到这个错误,但我无法在我的设备上重现它

有什么问题吗?我怎样才能修好它


谢谢

您可以发布您的imageView初始化吗? 如果未完成,则需要先对其进行初始化:

ImageView imageView = findViewById(R.id.myimageViewId);

在Glide库中有一种方法可以获取位图,您可以使用该方法获取位图并设置为Imageview

您还可以使用ResourceDrawable代替“imagepath”

Glide.with(上下文)
.asBitmap()
.占位符(占位符)
.错误(占位符)
.装载(
“图像路径”
)
.into(对象:CustomTarget(){
覆盖资源就绪(资源:位图,转换:转换?){
//在这里您将得到位图文件,您可以使用它来设置图像视图。
image.setImageBitmap(资源)
}
覆盖已清除(占位符:可绘制?){
//当imageView在生命周期调用时被清除或由于其他原因被清除时,将调用此函数。
//如果您在其他地方引用位图而不是此图像视图,请在此处清除它,因为您无法再使用位图。
}
})
添加依赖项:

implementation 'com.github.bumptech.glide:glide:3.7.0'
并编写以下代码片段:

                             try {
                                Glide.with(getApplicationContext())
                                        .load(YOUR_IMAGE_URL)
                                        .asBitmap()
                                        .into(new SimpleTarget<Bitmap>() {
                                            @Override
                                            public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                                                Uri bmpUri = Common.getLocalBitmapUri(resource, context);
                                    your_image_view.setImageBitmap(resource);

                                            }

                                            @Override
                                            public void onLoadFailed(Exception e, Drawable errorDrawable) {
                                                super.onLoadFailed(e, errorDrawable);
                                            }
                                        });
                            } catch (Exception e) {
                                e.getStackTrace();
                            }
试试看{
Glide.with(getApplicationContext())
.load(您的\u图像\u URL)
.asBitmap()
.into(新的SimpleTarget(){
@凌驾

public void onResourceReady(位图资源,GlideAnimationCheck这可能对您获取任何视图的位图都有帮助。您是否初始化了此imageView?嘿,检查我的答案我的帮助
                             try {
                                Glide.with(getApplicationContext())
                                        .load(YOUR_IMAGE_URL)
                                        .asBitmap()
                                        .into(new SimpleTarget<Bitmap>() {
                                            @Override
                                            public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                                                Uri bmpUri = Common.getLocalBitmapUri(resource, context);
                                    your_image_view.setImageBitmap(resource);

                                            }

                                            @Override
                                            public void onLoadFailed(Exception e, Drawable errorDrawable) {
                                                super.onLoadFailed(e, errorDrawable);
                                            }
                                        });
                            } catch (Exception e) {
                                e.getStackTrace();
                            }