一个简单的图像弹出窗口
A simple image popup
因此,我正在为我的寻宝游戏应用程序添加一项新功能,该功能基本上是显示图片以获取线索的功能。通过点击线索文本,我转到 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"));
您不应将地图的结果(即 Integer 可绘制资源)`设置为静态方法。你应该通过意图传递它,例如:
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 ImageView clueImageView
因此,我正在为我的寻宝游戏应用程序添加一项新功能,该功能基本上是显示图片以获取线索的功能。通过点击线索文本,我转到 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"));
您不应将地图的结果(即 Integer 可绘制资源)`设置为静态方法。你应该通过意图传递它,例如:
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 ImageView clueImageView