/ / void型の `doInBackground()`は `AsyncTask`に受け入れられませんか? - アンドロイド、android-asynctask

void型の `doInBackground()`は `AsyncTask`によって受け入れられません? - android、android-asynctask

から見られるように GoogleのAndroidドキュメント 私達はそれを見ます

Params実行時にタスクに送信されるパラメータの型。

進捗バックグラウンド計算中に発行された進行単位のタイプ。

結果バックグラウンド計算の結果の型

でも述べた この 素晴らしい答え

しかしそれでは、なぜ Void 結果の型としてAndroid Studioによって次の警告が表示されます。 doInBackground ライン:

doInBackground(String...)" in "(..)MainActivity.myTask" clashes with "doInBackground(Params...)" in "android.os.AsyncTask"; attempting to use incompatible return type

これは、 AsyncTask 宣言されている:

private class myTask extends AsyncTask<String,Void,Void> {
@Override
protected void doInBackground(String... url) {
//do stuff with url[0]
}

@Override
protected void onPostExecute() {
//more stuff
}
}

比較すると、これはうまくいくようです:

private class myTask extends AsyncTask<String,Void,String> {
@Override
protected String doInBackground(String... url) {
//do stuff with url[0]
return "hi";
}

@Override
protected void onPostExecute(String result) {
//more stuff
}
}

このトピックについてはさまざまな質問がありますが、ほとんどの場合、 AsyncTask パラメータまたはパラメータとクラスの戻り値。

回答:

回答№1は4

このコードを試してください

 private class myTask extends AsyncTask<String,Void,Void> {
@Override
protected Void doInBackground(String... url) {
//do stuff with url[0]
return null;

}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
//more stuff
}
}