0

我正在尝试获取一些我保存在我的应用程序中的字符串并打印它们。出于某种原因,我的应用程序崩溃了。你可以帮帮我吗?:)

ListView list;
String[] listC, filenames;
String entry;
int files, i;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pastbets);

    list = (ListView) findViewById(R.id.list);
    listC = new String[filenames.length/2];
    Prepare();

    ArrayAdapter<String> filenameAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listC);
    list.setAdapter(filenameAdapter);
}

private void Prepare() {
    filenames = getApplicationContext().fileList();
    files = filenames.length/2;
    for(i=0; i<files; i++) {
        entry = openFile(filenames[2*i])+" - "+openFile(filenames[2*i+1]);
        listC[i] = entry;
    }
}

我认为'openFile'功能没问题,虽然......

private String openFile(String selectFile) {
    String file = "";
    FileInputStream fis;

    try {
        fis = openFileInput(selectFile);
        byte[] input = new byte[fis.available()];
        while(fis.read(input) != -1){
            file += new String(input);
        }
        fis.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return file;
}
4

1 回答 1

0

应用程序正在崩溃,因为filenames在使用它之前未初始化 Array,因此Prepare()在初始化数组之前调用方法listC

 list = (ListView) findViewById(R.id.list);
 Prepare();
 listC = new String[filenames.length/2];
于 2013-10-04T18:45:08.177 回答