Android的静态VS非静态问题
问题描述:
我一直在试图拨打以下几点:Android的静态VS非静态问题
public static void startfile() {
Log.i("File Works", "working2 ");
try {
FileOutputStream fos = openFileOutput("sdcard/sdtext.txt", MODE_WORLD_WRITEABLE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我得到的告诉我说:“不能让一个静态参考非静态方法openFileOutput错误(字符串,INT )从类型的ContextWrapper“
所以我搜索了该错误,发现this site。
我实现了这个:
public static void startfile(Trackfile O) {
Log.i("File Works", "working2 ");
O.nonstatstartfile();
}
public void nonstatstartfile(){
Log.i("File Works", "nonStat");
try {
FileOutputStream fos = openFileOutput("sdcard/sdtext.txt", MODE_WORLD_WRITEABLE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
当我从另一个调用类得到一个空指针错误startfile。我需要发送什么参数以避免空指针错误?
答
您可以从活动通过context
像下面
public static void startfile(Context c) {
Log.i("File Works", "working2 ");
try {
FileOutputStream fos = c.openFileOutput("sdcard/sdtext.txt", MODE_WORLD_WRITEABLE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
+1
...并在您的活动中使用'startfile(this)'。 (Activity扩展上下文)。你也应该为你的文件名使用绝对路径。 –
答
public void startfile() {
Log.i("File Works", "working2 ");
try {
FileOutputStream fos = openFileOutput("sdcard/sdtext.txt", MODE_WORLD_WRITEABLE);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
此方法添加到您的类,并使用它没有问题。 如果您在主类中需要它,请将其用于对象。
那么,为什么你需要这个方法是静态的,如果你在里面调用一个非静态方法? – Egor
你从另一个班级使用它吗? – Markonato
是的,我从另一个类的电话 –