【问题标题】:Android: openFileOutput only works in the MainActivity but not within any other ActivityAndroid:openFileOutput 仅适用于 MainActivity,但不适用于任何其他 Activity
【发布时间】:2020-06-22 12:06:29
【问题描述】:

如标题所述,以下代码确实包含三个文件:

MainActivity.java 中,openFileOutput 效果很好

protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   startActivity(new Intent(MainActivity.this, Pop.class));

   //openFileOutput works fine
   FileOutputStream xml = openFileOutput(checklistname, MODE_PRIVATE);
   }

dataBasis.java 在每次调用时创建一个文件。

public class dataBasis extends Activity {
    private String date ="";
    dataBasis() throws FileNotFoundException {
        FileOutputStream xml = openFileOutput("dataBasis.xml", MODE_PRIVATE);
    }
}

Pop.java中通过创建dataBasis实例,会创建一个文件“dataBasis.xml”。

public void onSelectChecklist(View v) throws FileNotFoundException{
    dataBasis da = new dataBasis();
}

这是发生错误的地方,如下所示:

【问题讨论】:

  • 您在Pop.java 中有一个错误。我的猜测是您尝试手动创建MainActivity 的实例,但这是行不通的。但是,由于您的 minimal reproducible example 没有显示 Pop.java,因此我们无法真正提供帮助。如果您可以更新您的minimal reproducible example 以包含堆栈跟踪作为文本,并包含您的Pop 类,也许我们可以提供更具体的建议。
  • 这是 MainActivity 的 NullPointerException,这意味着您正在使用未初始化的 MainActivity。
  • 请发布更多您的代码,根据错误,您必须查看 mainactiviy.java 第 53 行,onclick 获取 NULLOBJECTREFERENCE 因此您所调用的内容不存在,只需检查这几件事
  • 我重新编辑了帖子,看看吧!

标签: java android file android-studio


【解决方案1】:

嗯,您似乎需要对 Context 的引用才能调用 openFileOutput() 方法。您可以使用getApplicationContext() 方法来执行此操作,如下所示:

public class dataBasis extends Activity {
    private String date ="";
    dataBasis() throws FileNotFoundException {
        FileOutputStream xml = getApplicationContext().openFileOutput("dataBasis.xml", MODE_PRIVATE);
    }
}

根据您的需要,您可能需要使用不同的方法来获取Context

【讨论】:

  • 遗憾的是没有成功。貌似调用另一个类的openFileOutput函数是不行的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 2018-12-07
  • 1970-01-01
  • 2011-12-16
相关资源
最近更新 更多