为了账号安全,请及时绑定邮箱和手机立即绑定

Android - openFileInput() NullPointerException

Android - openFileInput() NullPointerException

侃侃无极 2023-04-13 10:50:16
我正在尝试在我的 android 应用程序中生成一个代码作为字符串并将其保存到一个文本文件中。当您按下共享按钮时,应该从文本文件中读取代码并将其复制到剪贴板。我想我不了解有关活动/上下文的内容。当然,我阅读了有关它的文档,但我无法找出问题所在。希望你们能帮助我!FileSystem.javapackage com.niclasjaksch.shoppinglist;import android.content.Context;import androidx.appcompat.app.AppCompatActivity;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;class FileSystem extends AppCompatActivity {    static String filename = "shoppinglist_code.txt";    void Create() {        try {            FileOutputStream fOut = openFileOutput(filename, Context.MODE_PRIVATE);            String str = Utility.randomString(10);            fOut.write(str.getBytes());            fOut.close();        } catch (IOException e) {            e.printStackTrace();        }    }    String Read() {        String result = "";        try {            FileInputStream fin = openFileInput(filename);            int c;            while( (c = fin.read()) != -1){                result += c;            }            fin.close();        } catch (Exception e) {            System.out.println("An error occurred.");            e.printStackTrace();        }        return result;    }    void Clear() {        try {            File dir = getFilesDir();            File file = new File(dir, filename);            file.delete();        } catch (Exception e) {            System.out.println("An error occurred.");            e.printStackTrace();        }    }}Share.javapackage com.niclasjaksch.shoppinglist;import android.content.ClipData;import androidx.appcompat.app.AppCompatActivity;class Share extends AppCompatActivity {    android.content.ClipboardManager clipboardManager = null;    FileSystem fs = new FileSystem();    void Share() {        String code = fs.Read();        if(code == "" || code == null) {            fs.Create();            code = fs.Read();        }        ClipData clipData = ClipData.newPlainText("Source Text", code);        clipboardManager.setPrimaryClip(clipData);    }}
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

AppCompatActivity仅为实际 UI 工作创建子类,您将在其中使用startActivity()或开始该活动startActivityForResult()

将这些方法移动到真实的活动中,例如MainActivity,并摆脱ShareFileSystem类。


查看完整回答
反对 回复 2023-04-13
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

首先,您不应该扩展AppCompatActivityforFileSystemShare

发生的事情是将openFileOutput对象FileSystemthis) 作为上下文。实际上,它不算作单独的活动。

您可以按照 CommonWare 的建议删除类FileSystemShare,并将它们的功能移动到MainActivity. 或者您可以显式地contextMainActivity.


查看完整回答
反对 回复 2023-04-13
  • 2 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信