problème de rendu dans Android Studio lorsque l'écriture de fichiers

Daltrey Waters:

J'ai un code très simple qui écrit dans un fichier comme celui-ci -

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

Cela fonctionne sans problème sur l'émulateur.

Cependant, quand je suis l' édition de ce sur Android Studio, le rendu de la layout.xml J'utilise (qui appelle le code ci - dessus) échoue, citant une erreur sur la file.writeTextligne de code

Plus précisément, je reçois cette exception sur le callstack -

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

En d'autres termes, le code ci-dessus fonctionne bien dans l'émulateur, mais pas dans les applications studio layout aperçu.

Toute personne a des idées sur ce point?

CommonsWare:

L'aperçu de la mise en page est rendu vues. La seule raison pour laquelle je peux penser pourquoi ce code serait en cours d'exécution dans la mise en studio Android aperçu est parce que:

  • Vous avez écrit une vue personnalisée (ce qui est bien), et

  • Cette vue personnalisée essaie de faire d'E / S disque (ce qui est bien)

Donc, la meilleure solution est de déplacer le disque I / O à quelque chose de plus approprié (par exemple, un objet référentiel).

Si vous êtes sûr que vous voulez garder ce code là où il est, l' envelopper dans un chèqueisInEditMode() et ne pas faire d' E / S si vous êtes en mode d'édition. Cela signifie que le code est en cours d' exécution dans un IDE, et beaucoup de choses sur Context, par exemple getExternalFilesDir(), ne fonctionnera pas.

Je suppose que tu aimes

Origine http://10.200.1.11:23101/article/api/json?id=404338&siteId=1
conseillé
Classement