2011-10-07 78 views
2
AlertDialog.Builder load_alert = new AlertDialog.Builder(this); 
      File list = new File("data/data/project/databases/"); 
      if(!list.exists() || !list.isDirectory()){ 
       return; 
      } 
      String [] fileList = list.list(); 

      load_alert.setMessage("Please select");  
      load_alert.setItems(fileList, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int item) { 
        Toast toast = Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG); 
        toast.show(); 
       } 
      }); 
      load_alert.show(); 

这应该显示我的数据库文件夹的内容到alertdialog。我已经检查了fileList数组,并且它正在被填充。由于某些原因,它只是不通过setItems显示。有任何想法吗?AlertDialog不显示文件列表

回答

10

我意识到我对球赛有点迟,而且你可能已经解决了你的问题,但是我遇到了同样的问题,我找出了问题所在。

显然,当您拨打.setMessage()时,它将覆盖setItems()声明并将AlertDialog转换为消息对话框。相反,请致电.setTitle()设置对话框的标题。

另外,在您的示例中,您似乎没有拨打.create(),因此它应该是load_alert.create().show()。可能这是一个抄写错误,因为我认为AlertDialog.Builder没有show()方法。

+0

我刚刚有同样的问题.. API文档真的应该同时指定调用之间的差异。谢谢! – Andre

+0

谢谢,你救了我的命! –

0

即使我迟到张贴 但这里是我试过,并能够显示所有的文件夹。

AlertDialog.Builder listAlert = new AlertDialog.Builder(this); 
     String [] filelist = path.list(); 
     listAlert.setTitle("Select Definition File"); 
     listAlert.setItems(filelist, new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // Stuffs to do after you have selected folder or file. 

     } 
    }).show(); 

,并在我的代码中的一些观点,我

private File path = new File(Environment.getExternalStorageDirectory()+""); 

感谢