Android context.getdir()NullPointerException

Android context.getdir()NullPointerException,android,nullpointerexception,Android,Nullpointerexception,我已经写了一个简单的代码 if (context != null) { File mydir = context.getDir("abc",0); } 根据我的理解,我可以传递任意随机字符串作为第一个参数。 这将是所创建目录的名称。 此外,此代码已经在null检查中,因此上下文不能为null 但这会产生NullPointerException 11-10 09:43:44.839: E/AndroidRuntime(11441): FATAL EXCEPTIO

我已经写了一个简单的代码

if (context != null) 
    {
        File mydir = context.getDir("abc",0);
    }
根据我的理解,我可以传递任意随机字符串作为第一个参数。 这将是所创建目录的名称。 此外,此代码已经在null检查中,因此上下文不能为null

但这会产生NullPointerException

11-10 09:43:44.839: E/AndroidRuntime(11441): FATAL EXCEPTION: DOWNLOAD_THREAD
11-10 09:43:44.839: E/AndroidRuntime(11441): Process: com.samsung.samsunggearapps, PID: 11441
11-10 09:43:44.839: E/AndroidRuntime(11441): java.lang.NullPointerException
11-10 09:43:44.839: E/AndroidRuntime(11441):    at android.content.ContextWrapper.getDir(ContextWrapper.java:257)
编辑:我尝试使用getApplicationContext()。即使这也是空的

11-10 11:31:17.919: E/AndroidRuntime(21038): java.lang.NullPointerException
11-10 11:31:17.919: E/AndroidRuntime(21038):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:114)

我想你不能那样做。您必须指定
的where
(第一个参数)和
的how
(第二个参数):

getDir()允许您在内部内存中创建任何文件或目录,其他应用程序也可以根据您创建的模式访问这些文件或目录

File dir = ctx.getDir("abc", Context.MODE_PRIVATE);

第二个参数可以是0。即使我给Context.MODE_PRIVATE,我也会得到同样的错误。@user4057066是的,真正让我恼火的是第一个参数。。为什么这样做?即使我将代码更改为if(Context!=null){File mydir=Context.getDir(Environment.DIRECTORY_PICTURES,Context.MODE_PRIVATE);},我也会得到同样的错误。它不会进入其他领域。这意味着上下文不是空的。@user4057066现在…这很奇怪。我从来没有遇到过这个问题,请看这里:使用getApplicationContext()而不是上下文。您可以演示如何获得
context
对象吗?context context=getApplicationContext();你能解释一下为什么这样做是正确的吗?在StackOverflow上,通常不鼓励在没有任何解释的情况下进行代码转储。
File dir = ctx.getDir("abc", Context.MODE_PRIVATE);