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);
}
});
}