![](/img/trans.png)
[英]How to access object in viewModel from outside activity or fragment class in Kotlin?
[英]How to get file in Android outside Activity class using Kotlin
所以我有一个RecipeListActivity
,它有一个 RecyclerView 和一个DataManager.kt
单例,其中我将食谱存储在 HashMap 中。 我需要从 .xml 文件中读取这些食谱。
我设法使用assets.open
从RecipeListActivity
访问它,但是我需要在 DataManager 类中访问它们,我不能assets.open
那里使用assets.open
。
所以在我的 DataManager 类中,我有以下在init()
上运行的函数。
private fun seedRecipes() {
val parser = XmlPullParserHandler()
val istream = File("recipes.xml").inputStream()
recipes = parser.parse(istream)
}
但是我得到:
引起:java.io.FileNotFoundException:recipes.xml:打开失败:ENOENT(没有那个文件或目录)
.xml 文件位于何处并不重要,我只想访问它。 有哪些方法可以实现这一目标? 提前致谢!
如果没有 Context 实例,您将无法访问本地或内部文件。 您应该向您的 DataManager 类传递一个 Context 以在其构造函数中使用。 然后您可以使用context.resources
或context.assets
获取您的资源或资产。
class DataManager(private val context: Context) {
//...
init {
seedRecipes()
}
private fun seedRecipes() {
recipes = context.assets.open("locations.xml").use {
XmlPullParserHandler().parse(it)
}
}
}
请注意,必须关闭输入流,而您在示例中并未这样做。 在 lambda 返回后, use
函数会自动为您关闭流。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.