Android 从AlertDialog返回字符串

Android 从AlertDialog返回字符串,android,android-alertdialog,Android,Android Alertdialog,我正在从事android项目,我试图显示一个AlertDialog,其中包含一个CharSequence数组,当单击时,它应该返回字符串 下面是我正在使用的代码 String fileName = ""; //Collect the files from the backup location String filePath = Environment.getExternalStorageDirectory().getPath() + "/BoardiesPass

我正在从事android项目,我试图显示一个AlertDialog,其中包含一个
CharSequence
数组,当单击时,它应该返回字符串

下面是我正在使用的代码

String fileName = "";
        //Collect the files from the backup location
        String filePath = Environment.getExternalStorageDirectory().getPath() + "/BoardiesPasswordManager";
        File f = new File(filePath);

        File[] files = f.listFiles();
        final CharSequence[] fileNames = new CharSequence[files.length];
        if (files.length > 0)
        {
            for (int i = 0; i < files.length; i++)
            {
                fileNames[i] = files[i].getName();
            }
        }

        String selectedFile = "";
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("Choose Backup File");
        builder.setItems(fileNames, new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int item) {
                fileName = fileNames[item].toString();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();

        return fileName;
stringfilename=”“;
//从备份位置收集文件
字符串filePath=Environment.getExternalStorageDirectory().getPath()+“/BoardiesPasswordManager”;
文件f=新文件(文件路径);
File[]files=f.listFiles();
final CharSequence[]filename=新CharSequence[files.length];
如果(files.length>0)
{
对于(int i=0;i
如您所见,我试图将文件名设置为数组中的选定项,但Eclipse一直说
String fileName
需要是
final
类型,但显然,我无法将其设置为选定字符串的值。如何设置变量以便返回字符串


感谢您提供的帮助。

这里的问题是对何时执行“返回文件名”的误解。显然,只有在用户做出选择后才能执行此代码。但是,它实际上会在之前执行。实际上,它将在调用alert.show()后立即执行

最好从函数的作用域中删除fileName,并在单击事件中添加函数调用,如:

public void onClick(DialogInterface dialog, int item){
    String fileName = fileNames[item].toString();
    doSomethingWithTheFile(fileName);
}
另外,您的原始函数将不再返回任何内容,它只会设置您的对话框