package com.example.tictactoeshowgrid;
import android.os.Bundle;
import java.io.*;
import android.widget.Toast;
import android.content.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import android.content.Context;
public class ImportOBJ {
protected void onCreate(String filename) {
try
{
FileInputStream fis = openFileInput(filename);
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
String line = null, input="";
while ((line = reader.readLine()) != null)
input += line;
reader.close();
fis.close();
//toast("File successfully loaded.");
//return input;
}
catch (Exception ex)
{
//toast("Error loading file: " + ex.getLocalizedMessage());
//return "";
}
}
}
我正在查看Android的文件I / O示例。我想知道为什么openFileInput会出现一个错误,因为它是一个未定义的函数。我在想,也许我错过了一个导入?如果没有,则必然存在其他问题。
提前致谢...
答案 0 :(得分:10)
要访问非Activity类中的openFileInput
方法,您需要通过使用参数化方法发送Context或使用ImportOBJ
类构造函数将活动上下文传递给它:
protected void onCreate(String filename,Context context) {
try
{
FileInputStream fis = context.openFileInput(filename);
//...your code here...
}
catch (Exception ex)
{
}
}
并从您的活动传递上下文中:
ImportOBJ obj_import=new ImportOBJ();
obj_import.onCreate(<File_Name_Here>,Your_Current_Activity_Name.this);
答案 1 :(得分:1)
如果错误是:
对于类型...
,未定义openFileInput(String)方法
您必须在Context
中使用openFileInput
。例如,Activity
是Context
。因此,如果您将类改为此类,则必须解决错误:
public class ImportOBJ extends Activity{
.
.
.
}
有关上下文的更多详细信息,请参阅What is Context in Android?
。