所以,我正在为我的寻宝狩猎应用添加一个新功能,这基本上是能够显示图片的线索。通过点击线索文本,我转到ImageView活动,以显示依赖于该线索的图片。问题是,我不知道如何使这项工作。我尝试做一个Map / HashMap组合....
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("info", R.drawable.clue0);
map.put("goebel", R.drawable.clue1);
map.put("church", R.drawable.clue2);
map.put("confed", R.drawable.clue3);
map.put("ban", R.drawable.clue4);
map.put("jr", R.drawable.clue5);
map.put("ohara", R.drawable.clue6);
map.put("db", R.drawable.clue7);
然后用...填充图片。
imgClue.setImageResource(map.get("goebel"));
点击文字线索有以下代码:
txtClue.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent cluePic = new Intent(FCRun.this, imgClue.class);
Intent imgClue;
cluePic.putExtras(imgClue);
}
});
ImageView活动代码(到目前为止)就是这个......
public class imgClue extends Activity{
public static ImageView iClue;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.imgclue);
}
public static void setImageResource(Integer integer) {
}}
我的邻近警报传递ID以表示正在显示的位置。我使用Switch(ID)/ Case来设置基于位置在屏幕上显示的文本。我希望我可以在Case语句中添加另一行来说明要显示的图片。
所以我的问题是,我是以错误的方式解决这个问题还是我的代码完全错了?
代码不会编译,因为它只是不喜欢我的MAP语句中的句点。
谢谢, Hendo
答案 0 :(得分:1)
由于以下两行,代码无法编译:
Intent imgClue;
cluePic.putExtras(imgClue);
删除它们并用
替换它们 startActivity(cluePic);
这也是错误的imgClue.setImageResource(map.get("goebel"));
你不应该将地图(即整数可绘制资源)的结果设置为静态方法。您应该通过意图传递它,例如:
cluePic.putExtra(“MyImageKey”,map.get(“goebel”));
然后在onCreate
内的活动(imgClue)中你会做
int imageDrawableResource = getIntent().getIntExtra("MyImageKey", 0);
虽然你的代码并不完美,但这是一个非常好的方法。 : - )
为了让您的代码在以后更容易理解,我会建议这些更改:
Map<String, Integer> map
更改为Map<String, Integer> cluePictures
txtClue
更改为clueTextView
Intent cluePic
更改为Intent cluePictureIntent
imgClue extends Activity
更改为ImageClueActivity extends Activity
public static ImageView iClue
移除静态关键字并将其设为私有:private ImageView clueImageView