我有一个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);
}
一个字=它不起作用。如果有人帮忙,我会很高兴。
答案 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