从 class ANDROID 中定义的内部存储中检索数据

Retrieve Data from Internal Storage DEFINED in a class ANDROID

我在 Class 中定义了两个子classes 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 调用 class 的这些方法,例如:

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);

}

但是没有成功。在这种情况下有人可以帮助我吗?

I have defined two subclasses LoadData() and SaveData() in a Class

这些是方法。它们不是 子类

public class LoadSaveInternalActivity extends Activity

不要创建Activity的随机子类。

InternalActivity = new LoadSaveInternalActivity();

不要通过构造函数自己创建 Activity 的实例。

最简单的一组修复是:

第 1 步:将加载和保存方法移动到片段中

第 2 步:将这些方法中的 getBaseContext() 调用更改为 getActivity()

步骤 #3:更改 onCreateView()onStop() 以调用片段中的加载和保存方法

第 4 步:删除 LoadSaveInternalActivity 及其所有引用

该代码至少应该编译 运行。它仍然是相当糟糕的代码(例如,您正在主应用程序线程上执行磁盘 I/O)。

But it doesn't work out

以后,当您在 Stack Overflow 上post提问时,详细解释您的症状是什么。像"it doesn't work out"这样没有任何细节的陈述是没有用的。