2016-05-20 5 views
-1

私は、外部ストレージスペースを通してイメージを読み取る方法を持っていました。これらの画像をImageView ArrayListに保存したいと思います。これを行うには、検索したいフォルダを定義して、ImageViewに修復したい画像が割り当てられているビットマップ変数を作成しましたが、.setImageBitmap(saveImage)はImageviewオブジェクトに割り当てません。.setImageBitmap()がイメージをImageViewオブジェクトに割り当てないのはなぜですか?

private ArrayList<ImageView> getData() { 

     ImageView singleImage = null; 
     final ArrayList<ImageView> addImage = new ArrayList<>(); 
     File retrieveImages = new File(Environment.getExternalStoragePublicDirectory(
       Environment.DIRECTORY_PICTURES), "/WordResolver"); 

     for(File countImages : retrieveImages.listFiles()) { 

      if(countImages.isFile() && (countImages.getName().endsWith(".jpg"))) { 

       Bitmap saveImage = BitmapFactory.decodeFile(countImages.getAbsolutePath()); 
       singleImage.setImageBitmap(saveImage); //Fails here 
       addImage.add(singleImage); 
      } 

     } 

     return addImage; 
    } 

ここで画像を読み取ると、ビットマップオブジェクトに格納されていることを証明だ:

は、ここでは、コードです。

1

そして、ここでImageViewのイメージを割り当てる必要があるにもかかわらず、NPEエラーを投げているスタックトレースです。

5月20日03:13:38.220 8641から8641/com.example.aaron.wordresolver E/AndroidRuntime:致命的な例外:メイン プロセス:com.example.aaron.wordresolver、PID:8641 ジャワ。 lang.RuntimeException:アクティビティを開始できませんComponentInfo {com.example.aaron.wordresolver/com.example.aaron.wordresolver.PictureGallery}:java.lang.NullPointerException:仮想メソッド 'voidを呼び出しようとしましたvoid android.widget.ImageView.setImageBitmap android.graphics.Bitmap) 'とヌルオブジェクトリファレンスの とandroid.app.ActivityThread.andLaunchActivity(ActivityThread.java:2)の 476)android.os.Handler.dispatchMessageでandroid.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) でandroid.app.ActivityThread.-wrap11(ActivityThread.java) で (Handler.java:102 )android.os.Looper.loop(Looper.java:148)の とandroid.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:java.lang.NullPointe rException:ヌルオブジェクトリファレンスで仮想メソッド 'void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)'を呼び出そうとしました at com.example.aaron.wordresolver.PictureGallery.getData(PictureGallery.java:78) com.example.aaron.wordresolver.PictureGallery.onCreate(PictureGallery.java:45) (android.app.Activity.performCreate(Activity.java:6237)) (android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107))にあります。 android.app.ActivityThreaでandroid.app.ActivityThread.performLaunchActivity android.app.ActivityThread.handleLaunchActivityで(ActivityThread.java:2369) (ActivityThread.java:2476) で) d.-wrap11(ActivityThread.java) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) (android.os.Handler.dispatchMessage(Handler.java:102)) (android.os.Looper)にあります。 .loop(Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os。ZygoteInit $ MethodAndArgsCaller.run com.android.internal.os.ZygoteInit.mainで(ZygoteInit.java:726) (ZygoteInit.java:616)

+2

"singleImage"にimageviewを割り当てていないのは、なぜnullであるかです。 –

+0

'singleImage.setImageBitmap(saveImage);' ImageViewに_bitmap_を割り当てていないので、値を与えていますか? – COYG

+0

@COYG:このようにする singleImage =(ImageView)view.findViewById(R.id.your_imageview); –

答えて

1

SingleImageのが正しく初期化されていない、それはnullを割り当てる十分ではありません。 OnCreate()

初期化SingleImageの:

singleImage = (ImageView)findViewById(R.id.image); 

がremove:

ImageView singleImage = null; 

と初期化後getData()を実行します。

+0

この画像ビューは、外部ストレージから画像を保存する予定です。したがって、 'findViewById(R.id.image);で初期化することはできません。 – COYG

+0

ImageViewは画面レイアウトにコンテナで接続されています。 View on screenを使用したくない場合は、初期化する必要があります。 Contextコンストラクタで初期化するImageView singleImage = new ImageView(context); – Shadwork

関連する問題