2016-11-10 22 views
0

私はこのコードを持っていますが、ボタンをクリックするとギャラリーが開き、画像を選択するとギャラリーが再び閉じます。そして何も起こりません。ギャラリーで画像を選択

パブリッククラスMainActivityは間違っている何AppCompatActivity {

private Button loadimagebutton; 
private ImageView imageView; 

private static int RESULT_LOAD_IMAGE = 1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    loadimagebutton = (Button) findViewById(R.id.button); 

    loadimagebutton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(i, RESULT_LOAD_IMAGE); 
     } 
    }); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data){ 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     imageView = (ImageView)findViewById(R.id.imageView); 
     imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
    } 
    else{ 
     Toast.makeText(getApplicationContext(), "ERROR", Toast.LENGTH_LONG).show(); 
    } 
} 

を拡張しますか?

+0

にImageViewのを設定することができますか? ERRORトーストなし?クラッシュはない?さて、 'decodeFile()'は有効なビットマップの代わりに 'null'を返しました。使用前に確認し、報告してください。 – greenapps

+0

Log.dをif文に入れて、ロジックを正しく処理しているかどうかを確認しましたか? – drew

答えて

1

私は、このヘルプにあなたを願っています:

private String getRealPathFromUri(Uri contentURI) { 
    String result = ""; 
    Cursor cursor = getContentResolver().query(contentURI, null, null, null, null); 
    if (cursor == null) { 
     result = contentURI.getPath(); 
    } else { 
     cursor.moveToFirst(); 
     int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
     result = cursor.getString(idx); 
     cursor.close(); 
    } 
    return result; 
} 

とonActivityResultに();

1
@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch (requestCode) { 
     case RESULT_LOAD_IMG: 
      if (resultCode == RESULT_OK) { 
       Uri selectedImage = imageReturnedIntent.getData(); 

       String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver().query(
         selectedImage, filePathColumn, null, null, null); 
       cursor.moveToFirst(); 

       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       String filePath = cursor.getString(columnIndex); 
       cursor.close(); 


       Bitmap bMap = BitmapFactory.decodeFile(filePath); 
       handlePhotoUpload(bMap); 
      } 
    } 
} 

とあなたのhandlePhotoUpload方法であなたは何も起こりませんビットマップ

+0

このコードは元のコードと同じです。なぜあなたはそれを投稿しましたか? – greenapps

+0

@greenapps若干異なります。私は現在私のアプリケーションでそれを使用しており、それが動作することを知っています。 – drew

+0

なぜ違うのか教えてください。あなたのコード/変更を説明してください。 – greenapps

関連する問題