2

我有一个 Imageview,当用户单击它时,会打开一个对话框,并且假设在其中显示更大的图像。
我拥有的 Imageview 在布局中,代码是这样的: ImageView image_terrain = (ImageView)findViewById(R.id.imageView2); image_terrain.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            Intent intent = new Intent(getApplicationContext(), Universitymap.class);
            intent.putExtra("imageName", "sattelite");

            Dialog d = new Dialog(Universitymap.this);
            d.setContentView(R.layout.image_dialog);
            d.show();
        }
    });

我使用意图通过发送它的名称来发送点击的图片。

现在在 image_dialog 布局中,我有以下代码:

Intent intent = new Intent();
String fileName = intent.getExtras().getString("imageName");
loadImage(fileName);

在 image_dialog 布局类中加载图像的函数是:

private void loadImage(String fileName){
    ImageView img = (ImageView)findViewById(R.id.img_Picture);
    int resID = getResources().getIdentifier(fileName, "drawable", "com.neema.smobile.Main");
    img.setImageResource(resID);
}

一个词=它不起作用。如果有人帮忙,我会很高兴。

4

2 回答 2

1

尝试这个

int imageResource = getResources().getIdentifier(fileName, null, getPackageName());

imageview = (ImageView)findViewById(R.id.img_Picture);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);
于 2012-12-08T16:34:16.667 回答
0

为什么要通过 Intent 传递文件名?如果您在同一活动中创建对话框,则可以使用自定义构造函数创建自定义对话框并提供文件名。

我也认为这条线没有意义:

Intent intent = new Intent();
String fileName = intent.getExtras().getString("imageName");

由于您试图从新 Intent 中捕获字符串,而不是您发送的 Intent。

还是我误解了你的方式?

意图是启动活动而不是对话框:)

编辑:

class CustomDialog extends Dialog{
    private String fileName;
    public CustomDialog(String fileName){
        this.fileName = fileName;
        this.setContentView(R.layout.your_dialog_layout);

    }

   @Override
   public void onCreate(Bundle savedInstanceState){
       ImageView image = (ImageView) findById(R.id.image);
       image.setBackgroundResource(....//set your Image like mentioned from kumaand using your saved fileName
   } 
}

应该管用。有关更多信息,您可以查看http://about-android.blogspot.de/2010/02/create-custom-dialog.html

于 2012-12-08T16:39:25.707 回答