У меня проблемы с использованием текстового файла, сохраненного во внутреннем хранилище моего приложения, и с его помощью, чтобы определить, какие растровые изображения будут нарисованы на холсте и каковы будут их размещение.Файл успешно создается моим приложением.Кажется, что есть проблема с «filesDir», но только при определенных обстоятельствах.
Проблема в том, что я вставляю
val file: List<String> = File(this.filesDir, "TempLayoutData.txt").readLines()
внутри «класса Canvass» или «переопределить веселье на onDraw»"," filesDir "внезапно становится" неразрешенной ссылкой ".
Итак, чтобы обойти это, я создал класс" Layout ".Выглядит это так:
class Layout : AppCompatActivity(){
val file: List<String> = File(this.filesDir, "TempLayoutData.txt").readLines()
val stagewidth = file[0].toInt() * 10
val stagelength = file[1].toInt() * 10
var layout = Array(stagelength) { IntArray(stagewidth) }
var rowcounter = 0
var columncounter = 0
var read = File(this.filesDir, "TempLayout.txt").forEachLine {
for (i in it) {
layout[rowcounter][columncounter] = (i - 48).toInt()
columncounter++
}
rowcounter++
columncounter = 0
}
}
Я тестировал его внутри "override fun onCreate" моего класса ViewLayout (который также содержит класс Canvas), и он работал как шарм.
Когдаон прямо внутри класса Canvas, запущенного с использованием
val layout = Layout()
, он собирается без ошибок, однако при запуске приложения на телефоне возникает следующая ошибка: «Попытка вызвать виртуальный метод» java.io.File android.content.Context.getFilesDir () 'для ссылки на пустой объект "
В качестве источника ошибки он указывает непосредственно на
val file: List<String> = File(this.filesDir, "TempLayoutData.txt").readLines()
внутри моего класса Layout, когдаего экземпляр создается внутри класса Canvas.
И я просто не знаю, что делать.Я провел некоторый поиск в Google, и буквально ничего не говорится о людях, пытающихся использовать файл из внутреннего хранилища приложения, чтобы основывать на нем свои рисунки.