我在Class中定义了两个子类LoadData()和SaveData(),以便在内部存储中加载和保存数据:
public class LoadSaveInternalActivity extends Activity {
public String LoadData(String filename)
{ String read = "";
try {
FileInputStream fis = getBaseContext().openFileInput(filename);
if (fis != null) {
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
read = br.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return read;
}
public void SaveData(String data, String filename)
{
try {
FileOutputStream outputStream = getBaseContext().openFileOutput(filename, Context.MODE_PRIVATE);
String text = data;
outputStream.write(text.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}}
我试图从另一个Activity中调用这些类的方法,如:
public class Fragment1 extends Fragment {
EditText edittxt;
private final static String file_name = "myfile";
private LoadSaveInternalActivity InternalActivity;@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.frag1, container,false);
edittxt = (EditText) rootView.findViewById(R.id.editTxt);
InternalActivity = new LoadSaveInternalActivity();
String readData = InternalActivity.LoadData(file_name);
edittxt.setText(readData);
return rootView;
}
@Override
public void onStop() {
super.onStop();
InternalActivity = new LoadSaveInternalActivity();
InternalActivity.SaveData(edittxt.getText().toString(),file_name);
}
但它没有成功。在这种情况下,有人可以帮助我吗?
答案 0 :(得分:1)
我在Class
中定义了两个子类LoadData()和SaveData()
这些是方法。它们不是子类。
public class LoadSaveInternalActivity extends Activity
不创建Activity
的随机子类。
InternalActivity = new LoadSaveInternalActivity();
不通过构造函数自己创建Activity
的实例。
最简单的修复方案是:
步骤1:移动你的负载并将方法保存到你的片段
第2步:在这些方法中将getBaseContext()
来电更改为getActivity()
步骤3:更改onCreateView()
和onStop()
以调用加载并保存片段中的方法
步骤4:删除LoadSaveInternalActivity
及其所有引用
该代码至少应该编译并运行。它仍然是相当差的代码(例如,您正在主应用程序线程上执行磁盘I / O)。
但它无法解决
将来,当您在Stack Overflow上发布问题时,请详细解释 您的症状。没有任何细节的“没有成功”这样的陈述是无用的。