2017-08-28 40 views
4

我有一個AsyncTask作爲我在Kotlin中編寫的Activity中的內部類。現在,我嘗試使用[email protected]從我的AsyncTask的onPostExecute訪問Activity,但Android Studio將其報告爲Unresolved Reference錯誤。但這是在線建議的從InnerClass引用OuterClass最常用的方法。代碼如下:Kotlin錯誤,同時引用來自內部類的活動

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) 
     [email protected] //<- Cannot Resolve error here 
    } 


} 

} 

回答

2

你必須讓班級爲內

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) 
     [email protected] //<- Cannot Resolve error here 
    } 
} 

}

+0

謝謝你的回答。我第一次嘗試Kotlin,所以不知道這件事。 – Ikun

0

類MyTask必須定義爲一個內部類:

inner class MyTask(private var mContext: Context?, val pbMigrating: ProgressBar) :AsyncTask<Void, Int, Void>() { ... } 
+0

謝謝你的答案。 – Ikun

相關問題