0

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

4 に答える 4

0

印刷してみる

arrPath[id]

同じエラーが発生するはずです。Sky Kelsey が述べたように、配列のインデックスであるビュー ID には問題があります。

ファイルパスがたとえば

File file = new File("/sdcard/yourfile-VIEWID.jpg");

次に、配列を使用してパスを保存する代わりに、何かをしてみてください

File file = new File("/sdcard/yourfile-"+String.valueof(id)+".jpg");
于 2013-04-14T10:59:56.773 に答える
0

この ArrayIndexOutOfBoundsException はどこからスローされましたか? arrPath[i] にアクセスしたときにスローされると想定しています。ビューの ID が arrPath へのインデックスであることをどのように判断しますか? それが問題のようです。

于 2013-04-14T02:50:27.617 に答える