web-dev-qa-db-ja.com

AsyncTaskクラスのonPostExecute()メソッドをオーバーライドしたり、トリガーすることはできません

AsyncTaskの実行時にonPostExecute()メソッドを呼び出すのに問題があります。 onPostExecute()がオーバーライドされるAsyncTaskを拡張するクラスをセットアップしようとすると、次のビルドエラーが発生します。

「タイプAsyncTaskExampleActivityのメソッドonPostExecute()は、スーパータイプメソッドをオーバーライドまたは実装する必要があります」

私は@Override注釈。これはビルドエラーを取り除きますが、メソッドはまだ実行されません。誰かが私が見落としているものを指摘するほど親切であれば、私はそれを大いに感謝します。

コード:

package com.asynctaskexample;

import Android.os.AsyncTask;

public class AsyncTaskExampleActivity extends AsyncTask<Void, Void, Void> {

AsyncTaskExampleActivity(){
super();
    }

@Override
protected void onPreExecute() {
    }

@Override
protected Void doInBackground(Void... params) {
    return null;
}

@Override
protected void onPostExecute() {
    }
}
42
Ben

OnPostExecute() は引数を取りますdoInBackground()から返すオブジェクト)protected void onPostExecute(Void v)に変更します。引数を指定しない場合、メソッドシグネチャは一致せず、オーバーライドアノテーションは、このシグネチャでオーバーライドする関数がないことを訴え始めます。

103
user658042

試してください:

クラスで_Source -> Override/Implement methods.._を右クリックして、onPostExecute()メソッドを探します。取得した場合、すべてのタイプの引数を持つ完全なメソッドを提供します。

24

onPostExecute()を上書きしたい場合は、doInBackground()で返されたものをonPostExecute()のオブジェクトとして使用します。

例えば...

    @Override
    protected void doInBackground(Void...args0){
        // your code here...
        return value;
    }
    @Override
    protected void onPostExecute(void value){
        //code to run
    }
0
hacking diablo