【发布时间】:2020-03-14 10:07:17
【问题描述】:
我正在使用片段的 onResume() 方法上的 Volley 请求解析数据,用解析的数据填充布局,我需要获取片段的视图,这就是我调用 requireView() onResume 的原因() 成功解析后。 现在我的应用程序第一次在一行上崩溃了,我将用 * 表示:
java.lang.IllegalStateException:片段 DataMain{1a53f20} (4f68cb4d-c05f-4416-932e-26e455fbf106)} 没有返回视图 onCreateView() 或在 onCreateView() 之前调用。
这是代码:
class DataMain : Fragment(), CoroutineScope by MainScope() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_Data, container, false)
DataBalance = view.findViewById(R.id.Data_balance)
// Firebase User Auth
getUID.requestUidToken()?.addOnSuccessListener {
}?.addOnFailureListener {
val unregisteredView = inflater.inflate(R.layout.fragment_unregistred, container, false)
val registerNow = unregisteredView.findViewById<TextView>(R.id.textview_registernow)
registerNow.setOnClickListener {
val mIntent = Intent(activity, LoginMain::class.java)
requireActivity().startActivity(mIntent)
}
}
view
} else {
val unregisteredView = inflater.inflate(R.layout.fragment_unregistred, container, false)
val registerNow = unregisteredView.findViewById<TextView>(R.id.textview_registernow)
registerNow.setOnClickListener {
val mIntent = Intent(activity, LoginMain::class.java)
requireActivity().startActivity(mIntent)
}
unregisteredView
}
}
private fun populateDataLayout(res: JSONObject, view: View) {
val response = Gson().fromJson(res.toString(), ServerResponse::class.java)
//here I need the view
val lVDataMenu: ListView = view.findViewById(R.id.lV_DataMenu)
lVDataMenu.adapter = lVadapter
else if (response.code == 403) {
}
}
override fun onResume() {
getUID.requestUidToken()?.addOnSuccessListener { getTokenResult ->
Volley(config.DATA_LOADDATA, { res ->
**CRASH**populateDataLayout(res,requireView())
}, {
tv_unverified.visibility = View.VISIBLE
})
}
super.onResume()
}
我可以在填充例程中摆脱“view.findViewById(R.id.lV_DataMenu)”的使用,但是我不明白这里的问题。 我无法重新创建错误,所以这就是我要问的原因。那么为什么 requireView() 可能不返回视图呢?是因为用户切换到下一个片段,而 Volley 还没有完成解析吗?我该如何解决这个问题?
【问题讨论】:
标签: android android-fragments kotlin view android-view