0

AsyncTask を使用して Facebook のイメージ プロファイルをダウンロードしようとしていますが、ダウンロードしたビットマップが null であるため、nullPointerExceprion が返されます。

これは私のコードです:

private synchronized void downloadAvatar(final String user_id,final ImageView iv) {
        AsyncTask<Void, Void, Bitmap> task = new AsyncTask<Void, Void, Bitmap>() {

            @Override
            public Bitmap doInBackground(Void... params) {
                URL fbAvatarUrl = null;
                Bitmap fbAvatarBitmap = null;
                try {
                    fbAvatarUrl = new URL("http://graph.facebook.com/"+user_id+"/picture");
                    fbAvatarBitmap = BitmapFactory.decodeStream(fbAvatarUrl.openConnection().getInputStream());
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return fbAvatarBitmap;
            }

            @Override
            protected void onPostExecute(Bitmap result) {


                iv.setImageBitmap(result);
            }

        };
        task.execute();
    }

(user_id) は存在するプロファイル ID です。デバッグ モードで確認しました。

この行で nullPointerException を取得します。

iv.setImageBitmap(result);

(結果は null です)

また、ここにlogcatがあります:

04-12 14:16:40.140: E/AndroidRuntime(19304): FATAL EXCEPTION: main
04-12 14:16:40.140: E/AndroidRuntime(19304): java.lang.NullPointerException
04-12 14:16:40.140: E/AndroidRuntime(19304):    at com.example.sal.ProfileActivity$15.onPostExecute(ProfileActivity.java:1998)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at com.example.sal.ProfileActivity$15.onPostExecute(ProfileActivity.java:1)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at android.os.AsyncTask.finish(AsyncTask.java:602)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at android.os.AsyncTask.access$600(AsyncTask.java:156)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at android.os.Looper.loop(Looper.java:137)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at android.app.ActivityThread.main(ActivityThread.java:4575)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at java.lang.reflect.Method.invokeNative(Native Method)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at java.lang.reflect.Method.invoke(Method.java:511)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
04-12 14:16:40.140: E/AndroidRuntime(19304):    at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

0

あなたのコードをコピーしてテストしたところ、画像が正しく取得されて正常に動作しています..

あなたが入れたログは、画像がnullに設定されていることを示しています。これは、「try」部分のURLから画像を取得できなかったことを意味します.try catch部分のlogcatを入れてください.NULLの前に例外が発生した場合ポインターワン?

また、画像の取得に成功した場合にのみ設定されるように、「try」内に画像を設定することをお勧めします.catchでは、トースト定義エラーを設定できます..

今のところ再確認してください。インターネット許可を追加しました。ヌル ポインター例外の前に完全なログを表示してください...

于 2013-04-12T11:51:16.947 に答える