3
            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 的 File I/O 示例。我想知道为什么 openFileInput 会出现一个错误,因为它是一个未定义的函数。我在想也许我错过了一个进口?如果不是,那么肯定有其他问题。

提前致谢...

4

2 回答 2

10

要访问openFileInput非 Activity 类中的方法,您需要通过使用参数化方法发送 Context 或使用ImportOBJ类构造函数将 Activity Context 传递给它:

protected void onCreate(String filename,Context context) {
   try
     {
         FileInputStream fis = context.openFileInput(filename);  
         //...your code here...      
     }
   catch (Exception ex)
     {

     }
}

并从您的 Activity 传递上下文为:

ImportOBJ obj_import=new ImportOBJ();
obj_import.onCreate(<File_Name_Here>,Your_Current_Activity_Name.this);
于 2013-07-03T04:41:11.357 回答
1

如果错误是:

类型的 openFileInput(String) 方法未定义...

你必须openFileInput在一个中使用Context。例如一个Activity是一个Context。所以如果你把你的班级改成这个,必须解决错误:

public class ImportOBJ extends Activity{
.
.
.

}

您可以查看What is Context in Android?有关 Context 的更多详细信息。

于 2013-07-03T04:34:10.007 回答