为什么我不能使用getFilesDir(); 在静态环境中?

jac*_*its 5 methods static android file

我到处寻找答案,每当我看到其他人使用该方法时:

getFilesDir();
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以任何方式使用该方法时,尤其是:

File myFile = new File (getFilesDir();, filename );
Run Code Online (Sandbox Code Playgroud)

Eclipse只是说,"不能从tye ContextWrapper中静态引用非静态方法getFilesDir"

我试图用它来获取内部目录为我的应用程序写一个文件.

谢谢!

use*_*_CC 5

那是因为在静态方法中您没有获得类的对象,并且 getFilesDir 不是静态方法,这意味着它只能通过类 Context 的对象访问。

因此,您可以做的是将对象的引用存储在类的静态变量中,然后在静态方法中使用它。

例如:

static YourContextClass obj;

static void method(){
   File myFile = new File (obj.getFilesDir(), filename );
}
Run Code Online (Sandbox Code Playgroud)

您还必须在 onCreateMethod() 中存储对对象的引用

 obj = this;
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是

 static void method(YourContextClass obj){
      File myFile = new File (obj.getFilesDir(), filename );
 }
Run Code Online (Sandbox Code Playgroud)