java - Android Studio写文件时渲染问题

标签 java android android-studio kotlin

我有一个非常简单的代码,可以写入这样的文件 -

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/

相关文章:

java - NetBeans 不会检测 java ME 平台

java - 子图匹配(JUNG)

android - Gradle 构建在 OSX 上的 Android Studio 旧版本和新版本上失败

android - 在 Android 应用程序中嵌入 YouTube 直播

java - 带路径解析器 : Points are too far apart Navigation Drawer

java - 将优先级队列读/写到文本文件的有效方法是什么?

java - 为什么我的程序循环次数比需要的次数多两倍?

android - java.lang.NoClassDefFoundError : Failed resolution of: Lcom/sun/mail/util/PropUtil; when trying to use javax. 邮件

android - 如何将 repo 注入(inject) FirebaseMessagingService 类

android - 在 Android Studio 中为 Gradle 添加 AppCompat 依赖