如何在runOnUiThread
上使用fragment
。如何破片完成呢?
下面是在活动中执行此操作的代码
this@MainActivity.runOnUiThread(java.lang.Runnable {
progressBar.visibility = View.GONE
})
发布于 2019-12-16 11:06:56
如果要在片段中使用Activity
上下文,则需要使用runOnUiThread()
上下文。
示例代码
class MyFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
activity?.runOnUiThread {
progressBar.visibility = View.GONE
}
return inflater.inflate(R.layout.fragment_layout, container, false)
}
}
示例代码
class DepositFragment : Fragment() {
lateinit var rootView: View
lateinit var mContext: Context
override fun onAttach(context: Context) {
super.onAttach(context)
mContext = context
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
(mContext as Activity).runOnUiThread {
}
return inflater.inflate(R.layout.fragment_deposit, container, false)
}
}
发布于 2019-12-16 11:11:22
runOnUiThread方法做了两件事。
。
我想,最好的解决办法是:
将新的处理程序explicitly
的
像这样:
private val handler = Handler(Looper.getMainLooper())
...
handler.post {
...your task...
}
发布于 2019-12-17 17:33:29
这个问题对我没有任何意义,正如前面已经说过的,片段中的所有调用都将在main或UI线程上运行。没有必要为此显式调用@runOnUi螺纹。从工作线程更新视图时,需要将上下文切换到UI以更新视图。
https://stackoverflow.com/questions/59355360
复制相似问题