在AsyncTask中覆盖onPostExecute()

时间:2015-12-15 18:46:26

标签: java android android-asynctask

我似乎无法弄清楚这一点。据我所知,我已经遵循了扩展AsyncTask类的指导原则,所有其他相关问题在我的案例中没有用。

这是我的类,它扩展了AsyncTask:

package com.ck.nisttime;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * Created by ck on 12/15/15.
 */
public class FetchTime extends AsyncTask<Void,Void,String> {
    private int port=13;
    private String host="time-b.nist.gov";
    private MainActivity mainAct;

    public FetchTime(Context context){
        this.mainAct=(MainActivity) context;
    }

    @Override
    protected String doInBackground(Void... params) {
        String time="";
        try {
            Socket socket=new Socket(host,port);
            BufferedReader in= new BufferedReader(new InputStreamReader(socket.getInputStream()));
            in.readLine();
            time=in.readLine();
            socket.close();
        } catch(UnknownHostException uhe){
            Log.e("ck", uhe.toString());
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        return time;
    }

    @Override
    protected void onPostExecuted(String time){
        mainAct.showTime(time);
    }
}

当我尝试覆盖onPostExecute时发生错误,声明'方法不会覆盖其超类的方法'。我想我可以创建一个类变量来存储字符串,只需将其更改为...extends AsyncTask<Void,Void,Void>...,但这不是应该如何完成的。

1 个答案:

答案 0 :(得分:1)

您错误输入了它的名称,您有:

onPostExecuted

但它应该是:

onPostExecute

(最后没有额外的'd'。