我正在尝试从警报对话框中选择一个文件,当我按OK时,我应该使用display Content()方法在文本视图中以文本视图显示所选文件的内容,该方法将所选文件读取并显示内容一行一行地显示,但是它什么也不显示,我认为问题出在调用上,因为我已经在另一个应用程序中使用了该方法并且可以正常工作。
这是我拥有的代码以及如何调用displayContent()
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setTitle("Single Choice List")
.setSingleChoiceItems(files, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
selectionID = which;
}
})
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//display the content of the selected file
displayContent();
Toast.makeText(View_Records.this, "You selected " + files[selectionID], Toast.LENGTH_SHORT).show();
}
})
这是displayContent()的代码:
private void displayContent(){
try {
myFilesDirectory = new File(getFilesDir(), "MyFiles");
String fileName = files[selectionID] + ".txt";
File file = new File(myFilesDirectory, fileName);
String text;
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
while ((text = br.readLine()) != null) {
sb.append(text).append("\n");
}
txtViewRecords.setText(sb.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
替换
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setTitle("Single Choice List")
.setSingleChoiceItems(files, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
selectionID = which;
}
})
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//display the content of the selected file
displayContent();
Toast.makeText(View_Records.this, "You selected " + files[selectionID], Toast.LENGTH_SHORT).show();
}
})
调用另一种Activity
风格的startActivityForResult()
(dialog
),您将选择一个File
并返回Intent
的路径,然后在{ {1}},您只需使用它打开onActivityResult()
,然后在File
内显示其内容。
否则,您可以尝试先使用TextView
并添加create()
。像这样:
onDismissListener()
我不确定,但这应该使用AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
// do you things with builder
AlertDialog ad = builder.create();
ad.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
// here you open file, read content and put it inside TextView`
}
});
ad.show()
来完成,而无需为此创建AlertDialog
。
这是用于从目录获取所有文件:
Activity
您只需发送public static ArrayList<File> listFiles(File folder) {
if (folder.isDirectory()) {
ArrayList<File> tempList = new ArrayList<>();
File[] files = folder.listFiles();
for (File inFile : files) {
if (!inFile.isDirectory()) {
tempList.add(inFile);
}
}
/*Collections.sort(tempList, new Comparator<File>() { //you can sort by name
@Override
public int compare(File file1, File file2) {
return file1.getName().compareTo(file2.getName());
}
});*/
return tempList;
}
return null;
}
作为参数。
另外,如果您100%确保所有文件都是文件而不是目录,则可以跳过检查myFilesDirectory
,并返回if(!inFile.isDirectory())
。
然后,您只需使用Array
或list.get(selectionID)
来获取文件,具体取决于要从方法返回的内容。
方法也不必是array[selectionID]
。我已经static
满足了我的项目需求。