Iku*_*kun 7 android android-asynctask kotlin
我在用 Kotlin 编写的 Activity 中有一个 AsyncTask 作为内部类。现在,我尝试使用 AsyncTask 的 onPostExecute 访问 Activity,this@MyActivity但 Android Studio 将其报告为 Unresolved Reference 错误。但这是在线建议用于从 InnerClass 引用 OuterClass 的最常用方法。代码如下:
class MyActivity : AbstractAppPauseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onResume() {
super.onResume()
}
class MyTask(private var mContext: Context?, val pbMigrating: ProgressBar) :AsyncTask<Void, Int, Void>() {
private var size: Long = 0
override fun onPreExecute() {
super.onPreExecute()
...
}
override fun doInBackground(vararg params: Void?): Void? {
...
return null
}
override fun onProgressUpdate(vararg values: Int?) {
super.onProgressUpdate(*values)
pbMigrating.progress = values[0] as Int
}
override fun onPostExecute(result: Void?) {
super.onPostExecute(result)
this@MyActivity //<- Cannot Resolve error here
}
}
}
Run Code Online (Sandbox Code Playgroud)
你必须把班级设为内部
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onResume() {
super.onResume()
} inner class MyTask(private var mContext: Context?, val pbMigrating: ProgressBar) : AsyncTask<Void, Int, Void>() {
private var size: Long = 0
override fun onPreExecute() {
super.onPreExecute()
}
override fun doInBackground(vararg params: Void?): Void? {
return null
}
override fun onProgressUpdate(vararg values: Int?) {
super.onProgressUpdate(*values)
pbMigrating.progress = values[0] as Int
}
override fun onPostExecute(result: Void?) {
super.onPostExecute(result)
this@MyActivity //<- Cannot Resolve error here
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1286 次 |
| 最近记录: |