2016-12-24 12 views
-1

モバイルストレージからアプリの画像ビューに画像をロードしたかったのです。確かに、私は内部と外部の両方のストレージに画像を保存しました。しかしコンパイル中に、私はNULLポインタ例外を取得しています。同じ画像をdrawableフォルダに置き、そこから画像ビューを設定しようとしました。しかし、同じ問題に直面した。誰でもここで私を助けることができます!私が試したコードスニペットを追加しています。ImageViewでBitmapを設定中にNullPointer例外が発生しました

方法-1:

File imageFile = new File(Environment.getExternalStorageDirectory(),"golden_eagle.jpg"); 
if(imageFile.exists()) { 
    Log.v(LOGTAG, "Image file exists"); 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    Bitmap outputImageBitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath(), options); 
    ImageView imageView = (ImageView)findViewById(R.id.sample_image); 
    imageView.setImageBitmap(outputImageBitmap); 
} 

方法-2:

Bitmap bitimage; 
bitimage = BitmapFactory.decodeResource(getResources(), R.drawable.golden_eagle); 
if(bitimage == null) 
Log.v(LOGTAG,"bitimage is empty"); 
else 
Log.v(LOGTAG,"bitimage is not empty"); 
ImageView imageView = (ImageView)findViewById(R.id.sample_image); 
imageView.setImageBitmap(bitimage); 

方法-3:

ImageView imageView = (ImageView)findViewById(R.id.sample_image); 
int resid = getResources().getIdentifier("golden_eagle","drawable",getPackageName()); 
imageView.setImageResource(resid); 
//imageView.setImageResource(R.drawable.golden_eagle); 

方法4:

//Some class extending AppCompatActivity 
asyncTask.execute(); 

//some asyncTask 

onpostExecute(){ 
    //Method:1 
    //Method:2 
    //Method:3 
} 

のすべての上記の方法は、エラーが、私はImageViewのに画像を設定していますラインでで起こっているのと同じコンパイルエラー

12-24 20:16:42.520 1349-1349/? E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.home.BequestProto, PID: 1349 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.home.BequestProto/com.example.home.BequestProto.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2667) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494) 
    at android.os.Handler.dispatchMessage(Handler.java:111) 
    at android.os.Looper.loop(Looper.java:207) 
    at android.app.ActivityThread.main(ActivityThread.java:5776) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference 
    at com.example.home.BequestProto.MainActivity.onCreate(MainActivity.java:75) 
    at android.app.Activity.performCreate(Activity.java:6582) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2532) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2667) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494) 
    at android.os.Handler.dispatchMessage(Handler.java:111) 
    at android.os.Looper.loop(Looper.java:207) 
    at android.app.ActivityThread.main(ActivityThread.java:5776) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 

で終わりました。 私は必要なオブジェクトを初期化するのを忘れていたため、nullポインタの例外であることを知っています。私はどちらがどれかを知りたい。

答えて

0
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference 

これは、setImageResource()を呼び出す「方法3」のように見えます。

このエラーはあなたのどこに問題があるこの行があることを意味しますfindViewById()このウィジェットを見つけることができないため

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

imageViewは、すべての4例でnullです。

+0

はい、findViewById(存在する場合にのみ、これは画像を設定します)は、このビューを見つけることができません。手伝ってくれてありがとう。 –

0

ImageViewのIDがsample_imageの場合は、再度チェックしてください。レイアウトに見つかりません

1

"方法4:"非同期タスクで実行していることを示しています。私はレイアウトが変更されたと思うし、それは後に画像を設定しようとしました。私はそのレイアウトにIDを与えることを忘れてしまった、ので

ImageView imageView = (ImageView)findViewById(R.id.sample_image); 
    if (imageView != null) 
      imageView.setImageBitmap(outputImageBitmap); 

ビューが

関連する問題