我有一个简单的应用程序,当你点击GridView中的图像时,会弹出一个带有View的按钮。单击按钮时,我想查看已在图库中单击的图像。当我让应用程序在没有对话框的情况下导航到图库时,我可以毫无问题地使用它,但我需要它首先点击对话框。我的LogCat返回的错误Java.lang.ArrayIndexOutOfBoundsExeption
。有什么想法,我需要做什么来观看图像?以下是我的代码。
public void onClick(View v) {
Dialog dia = new Dialog(ViewGrid.this);
dia.setContentView(R.layout.viewimage);
dia.setTitle("What To Do?");
dia.show();
dia.setCancelable(true);
Button button = (Button)dia.findViewById(R.id.viewImage);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int id = v.getId();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + arrPath[id]), "image/*");
startActivity(intent);
}
});
}
我收到了这一行的错误:
intent.setDataAndType(Uri.parse("file://" + arrPath[id]), "image/*");
我明白了!以下代码是工作代码。我需要将我从视图中获取的我的ID设置为点击图像,而不是点击“查看”按钮。谢谢大家的帮助!
public void onClick(final View viewIt) {
Dialog dia = new Dialog(ViewGrid.this);
dia.setContentView(R.layout.viewimage);
dia.setTitle("What To Do?");
dia.show();
dia.setCancelable(true);
Button button = (Button)dia.findViewById(R.id.viewImage);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int id = viewIt.getId();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + arrPath[id]), "image/*");
startActivity(intent);
}
});
}
答案 0 :(得分:0)
不确定,但我认为应该在最后调用dia.show();
- 即在 view.setOnClickListener 之后。
答案 1 :(得分:0)
从哪里抛出此ArrayIndexOutOfBoundsException?我假设当你访问arrPath [i]时它被抛出。你怎么认为视图的id应该是arrPath的索引?这似乎是问题所在。
答案 2 :(得分:0)
尝试打印
arrPath[id]
你应该得到同样的错误。 正如Sky Kelsey所提到的,视图id是数组的索引有问题。
如果文件路径是例如
File file = new File("/sdcard/yourfile-VIEWID.jpg");
然后尝试而不是使用数组来保存路径,做一些事情
File file = new File("/sdcard/yourfile-"+String.valueof(id)+".jpg");
答案 3 :(得分:0)
我已经找到了问题,并在问题中将我的正确代码发布到了上面。谢谢所有帮助过的人。