我想在对话框中打开图库中的图像。

它可以在没有对话框的情况下工作,但在对话框中会失败。

谁能帮我发现问题?谢谢。



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);
}

最佳答案

问题似乎在以下行中
ImageView图片=(ImageView)findViewById(R.id.image);

在这种情况下,findViewById在活动布局内查找视图。而是在对话框上使用findViewById。就像是

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

10-07 19:24
查看更多