从静态方法引用非静态方法

发布于 2024-11-07 21:47:14 字数 194 浏览 2 评论 0原文

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

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

有关如何修复无法从 ContextWrapper 类型对非静态方法 getDir(String, int) 进行静态引用的任何建议

I am trying to call the following function from a static method.

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

Any suggestions on how to fix Cannot make a static reference to the non-static method getDir(String, int) from the type ContextWrapper

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夢归不見 2024-11-14 21:47:14

在不了解更多有关您的情况或方法的情况下,我想说您需要将 Context 传递到您的静态方法中,并对该对象调用 getDir()

Without knowing more about your situation or method, I'd say you'll need to pass a Context into your static method and call getDir() on that Object.

演多会厌 2024-11-14 21:47:14

只需将您的 getFiles 函数设置为 public static 即可,如下所示:

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;
}

您就可以从其他 Activity 访问它。

Just make your getFiles func public static like this:

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;
}

And you'll be able to access it from another activity.

就此别过 2024-11-14 21:47:14

另外,请

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

查看此处,以更好地解释您做错了什么。

Do

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

Also look here for a better explanation of what you were doing wrong.

柏拉图鍀咏恒 2024-11-14 21:47:14

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

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

所以,在这种情况下它会给出错误,因此我们必须使函数成为非静态的。

This is the error which comes , when we are using "getConTentResolver()" in static method
like:

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

So, in this case it will give an error, Therefore we have to make the function non-static.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文