Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android Studio中找不到getExternalFilesDir()函数的上下文_Java_Android - Fatal编程技术网

Java 在Android Studio中找不到getExternalFilesDir()函数的上下文

Java 在Android Studio中找不到getExternalFilesDir()函数的上下文,java,android,Java,Android,所以,我尝试在Android Studio中向文件写入文本。我有以下代码: public void sampleFunction(){ File File=新文件(getExternalFilesDir(null),“sample File.txt”); } 问题是无法解析方法getExternalFilesDir(null)。在做了一些研究之后,我注意到我需要提供上下文类。例如: public void sampleFunction(Context c) { File file =

所以,我尝试在Android Studio中向文件写入文本。我有以下代码:

public void sampleFunction(){
File File=新文件(getExternalFilesDir(null),“sample File.txt”);
}
问题是无法解析方法getExternalFilesDir(null)。在做了一些研究之后,我注意到我需要提供上下文类。例如:

public void sampleFunction(Context c) {
    File file = new File(c.getExternalFilesDir(null), "equation_history.xml");
}
当我调用sampleFunction时,我只需在当前上下文中传递:

sampleFunction(这个)

这通常是可行的,但是,我需要在按钮的setOnClickListener函数中调用此函数。例如:

Button b_go = findViewById(R.id.b_go);
b_go.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Functions.sampleFunction(this);
    }
});
因此,
this
的返回值是
android.view.view.OnClickListener
,而不是
android.content.Context


我怎样才能避开这件事呢?任何建议都将不胜感激。

不要将“this”作为参数传递,而是尝试调用getApplicationContext(),或者如果您在片段中,只需调用getActivity()。

通常的做法是在类中声明一个上下文myContext变量,然后在创建时,使用myContext=this填充它;然后,在任何侦听器或异步任务中,您都可以使用myContext.getExternalFilesDir(null)

使用
MyActivity。此
,其中
MyActivity
是包含此代码的活动的名称。或者使用
view.getContext()
,其中
view
onClick()
参数。嘿@xsico,欢迎使用StackOverflow,最好能提供一些关于代码的上下文和参考,而不是像这样发布它
File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);