2017-01-08 8 views
2

ギャラリーの画像をダイアログで開きたいと思います。ダイアログのギャラリーから画像を開くにはどうすればいいですか?

これはダイアログなしでは機能しますが、ダイアログ内では失敗します。

誰かが問題を見つけるのを助けることができますか?ありがとう。


MainActivity.java

view.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
    @Override 
    public boolean onNavigationItemSelected(MenuItem menuItem) { 
     int item_id = menuItem.getItemId(); 
     switch (item_id) { 
      case R.id.add_image: 
       final Dialog imageDialog = new Dialog(MainActivity.this); 
       imageDialog.setContentView(R.layout.add_image); 

       //listen for clicks on Open Image Button 
       Button addBtn = (Button) imageDialog.findViewById(R.id.addBtn); 
       addBtn.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
         intent.setType("image/*"); 
         startActivityForResult(intent, IMAGE_CODE); 
        } 
       }); 
       imageDialog.show(); 
       break; 
     } 
     return true; 
    } 
}); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == IMAGE_CODE && resultCode == RESULT_OK && null != data) { 
     try { 
      Uri uri = data.getData(); 
      ContentResolver cr = getContentResolver(); 

      Bitmap bitmap = MediaStore.Images.Media.getBitmap(cr, uri); 

      ImageView image = (ImageView) findViewById(R.id.image); 
      image.setImageBitmap(bitmap); 
     } 
     catch (Exception e) { 
      Toast.makeText(this, "Please try again", Toast.LENGTH_LONG).show(); 
     } 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 

答えて

1

問題は、次の行 ImageViewの画像=(ImageViewの)findViewById(R.id.image)であると思われます。

この場合、findViewByIdはアクティビティレイアウト内のビューを探しています。代わりに、あなたのダイアログでfindViewByIdを使用してください。何かのように

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

関連する問題