2011-09-09 33 views
40

Tôi gặp sự cố khi nhận phương thức onPostExecute() để gọi khi chạy AsyncTask. Khi tôi cố gắng thiết lập lớp học của mình mở rộng AsyncTask trong đó onPostExecute() bị ghi đè, tôi nhận được lỗi xây dựng sau.Không thể ghi đè phương thức onPostExecute() trong Lớp AsyncTask hoặc làm cho nó kích hoạt

'Phương pháp onPostExecute() của kiểu AsyncTaskExampleActivity phải ghi đè hoặc thực hiện một phương pháp siêu kiểu'

Tôi đã cố gắng loại bỏ các @Override chú thích. Điều này sẽ loại bỏ lỗi xây dựng nhưng phương thức vẫn không thực thi. Nếu bất kỳ một trong những sẽ như vậy loại như để chỉ ra những gì tôi đang nhìn tôi rất nhiều sẽ đánh giá cao nó.

Code:

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() { 
    } 
} 

Trả lời

99

OnPostExecute() có một đối (đối tượng bạn trở về từ doInBackground()). Thay đổi nó thành protected void onPostExecute(Void v). Nếu bạn không cung cấp đối số, chữ ký của phương thức không khớp và chú thích ghi đè bắt đầu khiếu nại rằng không có hàm nào để ghi đè bằng chữ ký này.

22

Hãy thử:

Trong lớp thử click chuột phải Source -> Override/Implement methods.. và tìm kiếm các phương pháp onPostExecute(). Nó sẽ cung cấp cho bạn phương pháp hoàn chỉnh với tất cả các loại đối số nếu nó nhận được.

+0

Rất tuyệt vời. Cảm ơn vì tiền hỗ trợ. – Ben

+0

Trong Android Studio, bạn có thể chuyển đến menu Mã -> Phương thức ghi đè (Ctrl + O) –

+0

Trên phiên bản mới, Nhấp chuột phải -> Tạo -> Phương pháp ghi đè –

-2

Bạn nên thêm phương thức super.onPostExecute(). Ví dụ:

@Override 
protected void onPostExecute(Void nothing) 
{ 
    super.onPostExecute(nothing); 
} 

EDIT: Guys, tôi không biết tại sao bạn downvoting câu trả lời. Người hỏi đang thiếu một đối số của phương thức onPostExecute() và không có phương thức siêu kiểu được triển khai. Đó là lý do tôi đăng câu trả lời này.

+3

Tại sao anh ta nên thêm nó? Bạn vui lòng làm rõ lý do? – FanaticD

Các vấn đề liên quan