如何修复无法解析方法'openFileOutput(java.lang.String,int)'

时间:2019-08-09 15:03:12

标签: java android android-studio

即使删除上下文或添加上下文,错误仍然会出现

public class fileHelper {
    public static final String FILENAME = "listinfo.dat";
    public static void writeData(ArrayList<String> items, View.OnClickListener context){
        try {
            FileOutputStream fos = context.openFileOutput(FILENAME, Context.MODE_PRIVATE);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(items);
            oos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

我已经尝试删除上下文

3 个答案:

答案 0 :(得分:0)

View.OnClickListener不是上下文(也不是您需要的上下文)。您需要在通话活动中使用上下文

   public static void writeData(ArrayList<String> items, Context context){
    try {
        FileOutputStream fos = context.openFileOutput(FILENAME, Context.MODE_PRIVATE);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(items);
        oos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

答案 1 :(得分:0)

public static void writeData(ArrayList<String> items, View.OnClickListener context)

尽管您定义了一个称为“上下文”的参数。它不是Android Context

Context是一个对象,例如ActivityApplication的实例,因此您需要传递其中一个(实例,而不是对类本身的引用)到需要使用此代码的代码。

粗略地说,ActivityApplication实例将是此类适当方法内的代码“ this”。

答案 2 :(得分:0)

问题在于您没有将上下文传递给方法。

View.OnClickListener context

这不是上下文。是onClickListener

您需要传递Context,然后像这样使用它:

public static void writeData(ArrayList<String> items, Context context){
    try {
        FileOutputStream fos = context.openFileOutput(FILENAME, Context.MODE_PRIVATE);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(items);
        oos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}