因此,我正在为我的寻宝游戏应用程序添加一项新功能,该功能基本上是显示图片以获取线索的功能。通过点击线索文本,我转到 ImageView Activity 以显示依赖于该线索的图片。问题是,我不知道如何进行这项工作。我尝试做一个 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 Activity 代码(到目前为止)是这样的......
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 语句中的句点。
谢谢, 亨多
最佳答案
由于这两行代码无法编译:
Intent imgClue;
cluePic.putExtras(imgClue);
删除它们并替换为
startActivity(cluePic);
这也是错误的imgClue.setImageResource(map.get("goebel"));
您不应将 map 的结果(即整数可绘制资源)`设置为静态方法。你应该通过 Intent 传递它,例如:
cluePic.putExtra("MyImageKey", map.get("goebel"));
然后在你的activity(imgClue)里面onCreate
你会做
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):private ImageView clueImageView
关于android - 一个简单的图像弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584908/