我有两个课程/活动:
的Firstclass:
public class FirstClass extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void addData(String filename, String data); {
SecondClass second = new SecondClass();
second.save(name, data);
}
}
二等:
public class SecondClass extends Activity {
public void save(String filename, String data) {
try {
FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(data.getBytes());
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如您所见,我想要做的是从SecondClass
中的FirstClass
调用方法。该方法将一些数据存储到内部存储中。
这样做的正确方法是什么?我知道我应该对Context
做些什么,但我不知道到底是什么。
答案 0 :(得分:0)
将其设为简单的java类。
public class ThirdClass
{
public void save(String filename, String data, Context context)
{
try {
FileOutputStream fos = context.openFileOutput(filename,Context.MODE_PRIVATE);
fos.write(data.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在第一个活动中调用此方法。
ThirdClass third= new ThirdClass();
third.save(name, data,this);
替代方法如果您不想创建Third类并且想要使用SecondClass。然后将此save方法设置为static。
public class SecondClass extends Activity
{
//Oncreate method....
public static void save(String filename, String data)
{
try {
FileOutputStream fos = openFileOutput(filename,Context.MODE_PRIVATE);
fos.write(data.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
并从First Activity中调用此方法。
SecondClass.save(name, data);
答案 1 :(得分:0)
使save
成为静态方法和/或将其移动到自己的静态类(非活动)。
所以你可以使用以下方法调用它:
SecondClass.save(name, data);
并将其定义如下:
public static void save(String filename, String data)
{
答案 2 :(得分:0)
您应该创建一个名为SaveHelper的类,它不会扩展活动并添加静态方法,因此您可以执行以下操作: FileHelper.save(...)
public class FileHelper {
public static void save(Context context, String filename, String data) {
try {
FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(data.getBytes());
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }