请参考静态方法中的非静态方法

时间:2011-05-18 16:16:11

标签: android file android-context

我试图从静态方法调用以下函数。

File directory = getDir(folderName, Context.MODE_PRIVATE);

有关如何修复Cannot make a static reference to the non-static method getDir(String, int) from the type ContextWrapper

的任何建议

4 个答案:

答案 0 :(得分:1)

在不了解您的情况或方法的情况下,我会说您需要将Context传递给静态方法并在该对象上调用getDir()

答案 1 :(得分:1)

只需将 getFiles func 公共静态 设为:

public static ArrayList<String> GetFiles(String DirectoryPath) {
    ArrayList<String> MyFiles = new ArrayList<String>();
    File f = new File(DirectoryPath);

    f.mkdirs();
    File[] files = f.listFiles();
    if (files.length == 0)
        return null;
    else {
        for (int i=0; i<files.length; i++)
            MyFiles.add(files[i].getName());
    }

    return MyFiles;
}

您将能够从其他活动访问它。

答案 2 :(得分:-2)

File fileName = New File();
File directory = fileName.getDir(folderName, Context.MODE_PRIVATE);

另请查看here以更好地解释您的错误。

答案 3 :(得分:-2)

当我们在静态方法中使用“getConTentResolver()”时出现错误 像:

 public static void Mthd()
 {
   Cursor cursor =getContentResolver().query(uri, null, null, null, null);
   //ur next code
  }

因此,在这种情况下它会产生错误,因此我们必须使该函数成为非静态函数。