Проблема рендеринга в Android Studio при записи файлов - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть очень простой код, который пишет в файл, подобный этому -

val path = context.getExternalFilesDir(null)?.absolutePath + "/user_id"
var file = File(path)
file.writeText("user id")

Это работает без проблем на эмуляторе.

Однако, когда я редактирую это на Android Studio, рендеринг макета. xml Я использую (который вызывает приведенный выше код) не удается, ссылаясь на ошибку в file.writeText строке кода

Более конкретно, я получаю это исключение на callstack -

java.io.FileNotFoundException: null\user_id (The system cannot find the path specified)

Другими словами, приведенный выше код хорошо работает в эмуляторе, но не внутри Android Предварительный просмотр макета студии.

У кого-нибудь есть мысли по этому поводу?

1 Ответ

1 голос
/ 04 апреля 2020

Предварительный просмотр макета представляет рендеринг видов. Единственная причина, по которой я могу подумать, почему этот код будет запускаться в предварительном просмотре макета Android Studio, заключается в том, что:

  • Вы написали пользовательское представление (это нормально) и

  • Это пользовательское представление пытается выполнить дисковый ввод-вывод (что не в порядке)

Итак, лучшее решение - это переместить диск I / O к чему-то более подходящему (например, объект репозитория).

Если вы уверены, что хотите сохранить этот код там, где он есть, оберните его в , проверяя isInEditMode() и не делайте ввод-вывод, если вы находитесь в режиме редактирования. Это означает, что код выполняется в IDE, и многие вещи в Context, такие как getExternalFilesDir(), не будут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...