我有一个非常简单的代码,可以写入这样的文件 -
val path = context.getExternalFilesDir(null)?.absolutePath + "/user_id"
var file = File(path)
file.writeText("user id")
这在模拟器上运行没有问题。
但是,当我在 Android Studio 上编辑此内容时,我正在使用的layout.xml(调用上面的代码)的渲染失败,引用 file.writeText
上的错误代码行
更具体地说,我在调用堆栈上收到此异常 -
java.io.FileNotFoundException: null\user_id (The system cannot find the path specified)
换句话说,上面的代码在模拟器中运行良好,但在 Android Studio 布局预览中运行不佳。
有人对这个项目有什么想法吗?
最佳答案
布局预览正在渲染 View 。我能想到为什么这段代码会在 Android Studio 布局预览中运行的唯一原因是:
您编写了一个自定义 View (这很好),并且
该自定义 View 正在尝试执行磁盘 I/O(这不好)
因此,最好的解决方案是将磁盘 I/O 移至更合适的位置(例如存储库对象)。
如果您确定要将代码保留在原来的位置,请将其包装在 a check for isInEditMode()
中如果处于编辑模式,则不要执行 I/O。这意味着代码在 IDE 中运行,Context
上的许多功能(例如 getExternalFilesDir()
)将不起作用。
关于java - Android Studio写文件时渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61022047/