首页 > 解决方案 > 错误的第二个参数类型找到 andriod.content.Dialoginterface.onClicklistener, required andrid.content.Context

问题描述

您好,我正在尝试获取要保存的课程列表,因此当应用程序关闭并重新打开时,内容仍然存在。我试图将数组保存到另一个 java 页面,但我不断收到此错误。

//Main Java
    builder.setPositiveButton("Add Class", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String ClassesAdded = ClassET.getText().toString();
                    adapter.add(ClassesAdded);
                    ClassET.setText("");
                    **FileHelper.writeData(classarray, this);//line giving me error**


            }
        });

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

    }

标签: java

解决方案


该错误是因为this指的OnClickListener是该范围内的,但该函数需要一个上下文。如果您的活动(无论生成器调用在哪里)被命名MainActivity,您需要使用MainActivity.this那里来使用正确的类实例,如下所示:

FileHelper.writeData(classarray, MainActivity.this);

如果这不是它的名字,显然MainActivity用你的实际类名替换......


推荐阅读