Android 使用Kotlin的片段中的runOnUiThread()方法
如何在Android 使用Kotlin的片段中的runOnUiThread()方法,android,kotlin,Android,Kotlin,如何在fragment中使用runOnUiThread。如何在片段中完成它 下面是在活动中执行此操作的代码 this@MainActivity.runOnUiThread(java.lang.Runnable { progressBar.visibility = View.GONE }) 如果要在片段内部使用runOnUiThread()internal fragment,则需要使用Activitycontext 示例代码 class MyFragment : Fragment()
fragment
中使用runOnUiThread
。如何在片段中完成它
下面是在活动中执行此操作的代码
this@MainActivity.runOnUiThread(java.lang.Runnable {
progressBar.visibility = View.GONE
})
如果要在片段内部使用
runOnUiThread()
internal fragment,则需要使用Activity
context
示例代码
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)
}
}
示例代码
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)
}
}
如果要在片段内部使用
runOnUiThread()
internal fragment,则需要使用Activity
context
示例代码
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)
}
}
示例代码
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)
}
}
runOnUiThread方法可以做两件事
private val handler = Handler(Looper.getMainLooper())
...
handler.post {
...your task...
}
RunNuithRead方法有两个功能
private val handler = Handler(Looper.getMainLooper())
...
handler.post {
...your task...
}
这个问题对我来说没有任何意义,因为上面已经说过,片段中的所有调用都将始终在主线程或UI线程上运行。无需为此显式调用@rununuithread。当您从工作线程更新视图时,需要将上下文切换到UI以更新视图。这个问题对我来说没有任何意义,如上所述,片段中的所有调用将始终在主线程或UI线程上运行。无需为此显式调用@rununuithread。当您从工作线程更新视图时,需要将上下文切换到UI以更新视图。一旦始终在UI线程上调用CreateView,则此runOnUiThread为unnecessary@AlexanderDadukin是的,我知道在ui线程上总是调用CreateView时,这个RunNoUnitRead是unnecessary@AlexanderDadukin是的,我知道