我正在尝试创建一个简单的 Android 应用程序,其中文本字段中的值被保存到文件中,然后在按下按钮时以可组合文本的形式显示在屏幕上,但是每当我尝试读取文件时,应用程序就会崩溃。
我创建了一个名为“noteDirectory”的目录。它保存一个名为“note”的文件。这是代码
`// Directory That Holds Notes
val noteDirectory = File(applicationContext.filesDir, "notes")
noteDirectory.mkdir()
// File That Holds Note
val note = File(noteDirectory, "note.txt")`
这是应用程序的业务逻辑。有一个字符串值保存名为“createNoteTextValue”的文本字段的值。还有另一个字符串值,用于保存显示已保存文件的文本可组合项的值。最后有一个名为“saveValue”的函数,它将“createNoteTextValue”中的值保存到“note”文件中。
`// Value For TextField That Is Saved Into File
var createNoteTextValue by remember { mutableStateOf("") }
// Value For Text That Displays Saved Note
var displayNoteTextValue by remember { mutableStateOf("") }
// Function That Saves Note
fun saveValue() {
applicationContext.openFileOutput("note.txt", Context.MODE_PRIVATE).use {
it.write(createNoteTextValue.toByteArray())
}
}`
这是用户界面。有一个列占据了整个屏幕。该列的内部是一个文本字段、两个按钮和一个文本可组合项。文本字段保存将存储到文件中的值。第一个按钮调用“saveValue”函数。第二个按钮应该将保存的文件显示到可组合文本中,但事实并非如此。
`// Application Layout
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
modifier = Modifier
.fillMaxSize()
) {
// TextField That Holds Note
TextField(value = createNoteTextValue, onValueChange = {createNoteTextValue = it})
// Button That Saves Note
Button(onClick = { saveValue() }) {
Text(text = "Save")
}
// Button That Displays Saved Note
Button(onClick = { displayNoteTextValue = note.readText() }) {
Text(text = "Show")
}
// Text That Displays Saved Note
Text(text = displayNoteTextValue)
}`
这一切都放在主要活动中。
当我尝试读取“note”文件的值时,应用程序崩溃了。我已经指出了问题但是 我不知道如何解决它。和目录有关系。每当我删除目录并将“applicationContext.fileDir”放入“note”文件中的父参数中时,它就会起作用。
您还需要在文件系统中创建文件,然后才能向其写入内容:
val note = File(noteDirectory, "note.txt")
note.createNewFile()