我尝试将数据从应用导出到文本文件中,要做到这一点,我知道我需要找到到应用特定文件存储点的适当路径。我发现我应该使用类似context.getExternalFilesDir()
的东西。虽然这看起来很简单,但当我尝试使用val path = context.getExternalFilesDir()
时,Android Studio告诉我,context
是一个函数,无法使用提供的参数调用。其他人似乎没有这个问题,是我缺少了一个导入还是类似的问题?
由于我遇到了context.getExternalFilesDir()
这一行,它被用来返回文件应该存放的路径,我以为它会正常工作,但没有这样的运气。我已经深入研究了很长时间,但似乎不知道在IDE不想识别它的情况下该怎么做。
以下是我的进口,以防我遗漏了什么:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.runtime.snapshots.SnapshotStateMap
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.unit.times
import com.example.packandfind.ui.theme.PackAndFindTheme
import java.io.File
下面是包含尝试调用的函数:
fun importData(): SnapshotStateMap<String, List<String>> {
val fileName = "data.txt"
// val path = context.getExternalFilesDir()
val file = File(fileName)
var data = mutableStateMapOf<String, List<String>>()
if (file.exists())
{
file.forEachLine {
val (key, value) = it.split("=")
// var newValue = value.replace("[", "")
// newValue = newValue.replace("]", "")
// newValue = newValue.replace(" ", "")
val listValue = value.split(",")
data[key] = listValue
}
} else {
data = mutableStateMapOf("New box" to listOf("location"))
}
return data
}
2条答案
按热度按时间bis0qfac1#
您似乎正在尝试使用编写UI。在这种情况下,
@Composable
函数可以使用LocalContext.current
获取有效的Context
:(from the docs)
由于您似乎不熟悉
Context
...我强烈建议您:View
的UI系统),或者pexxcrt22#
我建议将上下文作为参数从调用的Activity传递,并使函数接受它。