Androidに非同期通信を複数行うときの記載の仕方に困っています。
MainActivity.kt
1class MainActivity: AppCompatActivity() { 2 3 override fun onCreate(savedInstanceState: Bundle?) { 4 5 // 省略 6 7 confirmButton.setOnClickListener { 8 9 supportLoaderManager.initLoader(0,null, Callback1()) 10 supportLoaderManager.initLoader(1,null, Callback2()) 11 12 } 13 } 14} 15 16private class Callback1 : LoaderManager.LoaderCallbacks<Rss> { 17 override fun onLoaderReset(loader: Loader<Rss>?) { 18 19 } 20 21 override fun onLoadFinished(loader: Loader<Rss>?, data: Rss?) { 22 } 23 24 override fun onCreateLoader(id: Int, args: Bundle?) = RssLoader(this , urlText.text.toString()) 25 26} 27 28private class Callback2 : LoaderManager.LoaderCallbacks<Feed> { 29 //省略 30}
上記のようにCallBack用のクラスを2つ作って、使い分けて呼び出すようにしています。
override fun onCreateLoader(id: Int, args: Bundle?) = RssLoader(this , urlText.text.toString())
ただ、上記のRssLoader(this, のthisでエラーが発生しています。
RssLoaderは下記になります。
Rss.kt
1class RssLoader(context: Context, url: String): AsyncTaskLoader<Rss>(context) { 2 private var cache : Rss? = null 3 var rssUrl = url 4 5 override fun loadInBackground(): Rss? { 6 //省略 7 } 8 9 override fun deliverResult(data: Rss?) { 10 //省略 11 } 12 13 override fun onStartLoading() { 14 //省略 15 } 16 17 override fun onStopLoading() { 18 cancelLoad() 19 } 20 21 override fun onReset() { 22 //省略 23 } 24}
RssLoaderの初期化でエラーが出ているんですが、contextの部分に、何を入力したらいいのかわかりません。
MainActivity::class.javaを入れてみてもだめでした。
そこで、2つ聞きたいことがあります。
①MainActivity.ktのoverride fun onCreateLoader(id: Int, args: Bundle?) = RssLoader(this , urlText.text.toString())のthisに入力する値は何がいいのでしょうか?
②そもそも、Callbackのクラスを使って非同期の処理を分けていますが、一般的に別の非同期の処理(同じ処理を複数回ではない)を実装するときはどんな手法をとるものでしょうか?
お手数ですが、お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。