1

おそらく非常に単純な問題がありますが、何が間違っているのかよくわかりません。ファイルブラウザとしてロードされるリストビューがあります。これは、アイテムのいずれかをクリックすると起こるはずのことです。

protected void onListItemClick(ListView l, View v, int position, long id) {

File file = new File(path.get(position));

if (file.isDirectory())
{

if(file.canRead())
getDir(path.get(position));
else
{
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("[" + file.getName() + "] folder can't be read!")
.setPositiveButton("OK", 
  new DialogInterface.OnClickListener() {   
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
   }
  }).show();
}

}
else
{
new AlertDialog.Builder(this)

.setIcon(R.drawable.ic_launcher)

.setTitle("[" + file.getName() + "]")

.setPositiveButton("OK", 

  new DialogInterface.OnClickListener() {


   public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

   }

  }).show();

}

}

しかし、アイテムをクリックしても何も起こりません。クリックしたときにアクティビティがあるかどうかを確認するためにlogcatをチェックしましたが、まったくありません。このリスナーを特定のリストビューにリンクする必要がありますか? また、さらに情報を投稿する必要がある場合は、お知らせください。ご助力ありがとうございます!

新しい問題

AlertDialog show = new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("[" + file.getName() + "] folder can't be read!")
.setPositiveButton("OK", 
  new DialogInterface.OnClickListener() {   
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
   }
  }).show();
}

}
else
{
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("[" + file.getName() + "]")
.setPositiveButton("OK", 
  new DialogInterface.OnClickListener() {

   public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

   }

  }).show();

}

これらの両方で、alertDialog が定義されていないというエラーが発生します。

4

2 に答える 2

1

コンテキストを「this」から「YourActivityName.this」に変更します

例:new AlertDialog.Builder(YourActivityName.this);

于 2013-01-22T16:33:04.027 に答える
1

ListViewはい、を登録する必要がありますOnItemClickListener

たとえば、次のようにします。

myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> list,
        View view, int position, long id) {
        // Your code goes here
    }
});
于 2013-01-22T14:51:02.423 に答える