Java 在Android Studio中找不到getExternalFilesDir()函数的上下文
所以,我尝试在Android Studio中向文件写入文本。我有以下代码: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 =
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);