[英]How to call parent activity function from ASyncTask finish
I have a MainActivity and an AsyncTask class. 我有一个MainActivity和一个AsyncTask类。 MainActivity works well when I call this myTask.
当我将其称为myTask时,MainActivity可以很好地工作。
But how to call myTask's onPostExecute result from MainActivity. 但是如何从MainActivity调用myTask的onPostExecute结果。
This is my first question, I apologize if I'm wrong. 这是我的第一个问题,如果我错了,我深表歉意。
myTask class myTask类
public class myTask extends AsyncTask<String, Void, String> {
ProgressDialog mProgressDialog;
DownloadCallback mDownloadCallback;
Exception mException;
Context mContext;
JSONArray PHPfromArray= null;
String status="", message="";
private OkHttpClient client = new OkHttpClient();
public myTask(Context context, DownloadCallback downloadCallback) {
mContext = context;
mDownloadCallback = downloadCallback;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(mContext);
mProgressDialog.setMessage("Downloading.. ");
mProgressDialog.show();
}
@Override
protected String doInBackground(String... p) {
String jsonData = null;
return null;
}
@Override
protected void onPostExecute(String result) {
mProgressDialog.dismiss();
if ( result== null )
{
mDownloadCallback.onFailure(mException);
} else {
mDownloadCallback.onSuccess(durum);
}
}
public interface DownloadCallback
{
void onSuccess(String downloadedString);
void onFailure(Exception exception);
}
}
This code does not work, how to call from MainActivity? 该代码不起作用,如何从MainActivity调用?
new myTask(this, new myTask() {
@Override
public void onSuccess(String downloadedString) {
}
@Override
public void onFailure(Exception exception) {
}
});
You could modify myTask
like this: 您可以这样修改
myTask
:
....
public myTask(Context context){
mContext = context;
}//firstly modify constructor
public void setCallback(DownloadCallback downloadCallback){
mDownloadCallback = downloadCallback;
}//add a function
...
Then you could implements the android in activity like below: 然后,您可以在活动中实现android,如下所示:
public class MainActivity extends AppCompatActivity implements myTask.DownloadCallback {
...
final myTask myTask = new myTask(MainActivity.this);
myTask.setCallback(MainActivity.this);
myTask.execute();
@Override
public void onSuccess(String downloadedString) {
}
@Override
public void onFailure(Exception exception) {
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.