Не уверен, правильно ли я использую этот объект-компаньон.
Класс данных:
data class AppModel(
val name: String,
val items: List<ItemModel>,
)
Установите данные:
open class PathManager() {
companion object {
var shared = PathManager() // SHARED OBJECT IN QUESTION
}
var app: AppModel? = null
fun setUp() {
// Show loading...
// Parse the JSON
val gson = GsonBuilder().create()
val text = mainActivity.resources.openRawResource(R.raw.jsonFile)
.bufferedReader().use { it.readText() }
val appModel = gson.fromJson(text, AppModel::class.java)
app = appModel
performInitialPath()
}
private fun performInitialPath() {
val app = app?.let { it } ?: error("Attempted to start without an App Config.")
this.app = app // DEBUGGER SHOWS CORRECT VALUES HERE
// Removed irrelevant code for readability, builds 'initialFoo' here
this.mainActivity.addFragment(initialFoo)
}
}
Класс построителя фрагментов (выглядитдля сопутствующего объекта Path Manager здесь):
class Frag : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
var itemModels: List<ItemModel>? = null
if(PathManager.shared.app?.items != null) { // NULL - WHY?
itemModels = PathManager.shared.app?.items
}
}
}
Подводя итог, что происходит:
AppModel правильно построен в PathManager ().Данные есть (можно увидеть в отладчике)
Path Manager запускает класс 'Frag ()'
Ссылки на класс Frag () возвращаются ксопутствующий объект, созданный в PathManager (), пытается найти данные в PathManager.shared.app?.items, но данные там нулевые, тогда как это не должно быть.Разве объект-компаньон не совпадает со статической переменной?
Я уверен, что что-то упустил, просто ищу совет.Я правильно называю объект-компаньон?Могу ли я не ссылаться на это из нового класса, как это?Что дает?