无法通过代码从drawable获取图像

时间:2012-12-08 16:27:36

标签: android

我有一个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);
}

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

2 个答案:

答案 0 :(得分:1)

试试这个

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

imageview = (ImageView)findViewById(R.id.img_Picture);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);

答案 1 :(得分:0)

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

我认为这条线没有意义:

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

因为你试图从新的Intent中捕获String,而不是你发送的Intent。

或者我错过了理解你的方式?

Intent用于启动活动而非Dialogs:)

编辑:

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