首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.lang.NullPointerException从错误返回空?

java.lang.NullPointerException从错误返回空?
EN

Stack Overflow用户
提问于 2015-10-11 14:01:47
回答 2查看 805关注 0票数 0

当我删除测试代码时,这一行出现了错误。

代码语言:javascript
运行
复制
        Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);

由于出现了错误java.lang.NullPointerExceptionimage似乎变得空了

这是我得到图像的代码

代码语言:javascript
运行
复制
public class OkHttpHandler extends AsyncTask<Void, Void, byte[]> {

    private final String IMAGE_URL = "http://bit.ly/1DU2Zka";

    OkHttpClient httpClient = new OkHttpClient();

    @Override
    protected byte[] doInBackground(Void... params) {
        Log.d("e", "dddddddddd");
        Log.d("e", IMAGE_URL);

        Request.Builder builder = new Request.Builder();
        builder.url(IMAGE_URL);

        Request request = builder.build();

        try {

            Response response = httpClient.newCall(request).execute();

            System.out.println(response);
            Log.d("e", "FFFFFF response");

            return response.body().bytes();
        } catch (Exception e) {
            Log.d("e", "rrrrrrr");
            e.printStackTrace();
            Log.d("e", "rrrrrrr");

        }

        return null;
    }
}

这是正确的return null;

就像这样,我得到了mainactivity中的图像

代码语言:javascript
运行
复制
    public void downloadImage() {
        OkHttpHandler handler = new OkHttpHandler();

        byte[] image = new byte[0];

        try {

            image = handler.execute().get();
            Log.d("e", "hhhh handler");
System.out.print(image);
            if (image != null && image.length > 0){
                Log.isLoggable("e",image.length);
                Log.d("e", "ddddddd entered the try");
                Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
                imageView.setImageBitmap(bitmap);
  //              txtBytes.setText("Total bytes downloaded: " + image.length);
            }

        } catch (Exception e) {
            Log.d("e", "rrrrrr error");

            e.printStackTrace();
//            txtBytes.setText("Hmm sorry, something went wrong!");
        }

    }

为什么我要破例?

逻辑猫

代码语言:javascript
运行
复制
10-11 16:55:22.724  27814-27814/com.justedhak.www.i D/e﹕ ddddddd entered the try
10-11 16:55:22.739  27814-27814/com.justedhak.www.i D/e﹕ rrrrrr error
10-11 16:55:22.739  27814-27814/com.justedhak.www.i W/System.err﹕ java.lang.NullPointerException
10-11 16:55:22.739  27814-27814/com.justedhak.www.i W/System.err﹕ at com.justedhak.www.i.MainActivity.downloadImage(MainActivity.java:82)
10-11 16:55:22.739  27814-27814/com.justedhak.www.i W/System.err﹕ at com.justedhak.www.i.MainActivity.onCreate(MainActivity.java:54)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5389)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2256)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2350)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:163)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1257)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.os.Looper.loop(Looper.java:157)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5335)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
10-11 16:55:22.744  27814-27814/com.justedhak.www.i W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-11 14:30:34

我猜想问题是在您的主程序中分配图像(在您进入try块之前)。你只保留了一个字节,可以吗?

然后你试着把一个图像传递给一个字节,这似乎产生了问题。也许Java只是将图片的第一个字节放到变量映像中。这就是为什么您传递if条件,但如果您试图创建一个位图,则失败。

祝好运

票数 1
EN

Stack Overflow用户

发布于 2015-10-11 14:38:56

空指针异常显示当您没有正确初始化某物时。检查OnCreate方法,您是否正确地初始化了所有内容?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33065868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档