2015-12-15 5 views
-1

Я не могу понять это. Насколько я знаю, я следил за рекомендациями по расширению класса AsyncTask, и все другие связанные с ним вопросы в отношении SO не помогают в моем случае.Переопределить onPostExecute() в 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>..., но это не так, как должно быть сделано.

+0

Извините за то, что потратил время на пробелы ... – Cam

ответ

1

Вы опечатались имя этого, у вас есть:

onPostExecuted 

, но это должно быть:

onPostExecute 

(без дополнительной 'd' в конце).

+0

Почему я? ...... :) – Cam

Смежные вопросы