我有一个AsyncTask类连接到Web服务以获取内容然后打印到屏幕上 这是我的代码:
public class GetCreditAsyncTask extends AsyncTask<Object, Boolean, String>{
private MainActivity callerActivity;
private String credit;
public GetCreditAsyncTask(Context context){
callerActivity = (MainActivity )context;
}
@Override
protected String doInBackground(Object... params) {
.....//do something and get the credit
}
@Override
protected void onPostExecute(String response) {
callerActivity.txtView.setText(credit);
}
}
它运作完美但现在,我还有一个活动ProfileActivity
还希望使用GetCreditAsyncTask
获取赠送金额并将其打印到txtView
,
但在GetCreditAsyncTask
开始时,我将callerActivity
投向MainActivity
问题是如何使用一个AsyncTask类,以便我可以调用它并获得信用。
答案 0 :(得分:0)
您可以定义两个活动实现的接口。您必须转换为此接口,而不是强制转换为MainActivity。
public interface ActivityListener {
public void setText(String text);
}
public class MainActivity extends Activity implements ActivityListener {
...
public void setText(String text) {
TextView tv = findViewById(R.id.main_text);
tv.setText(text);
}
}
public class SecondActivity extends Activity implements ActivityListener {
...
public void setText(String text) {
TextView tv = findViewById(R.id.secondary_text);
tv.setText(text);
}
}
public class GetCreditAsyncTask extends AsyncTask<Object, Boolean, String>{
private ActivityListener callerActivity;
private String credit;
public GetCreditAsyncTask(Context context){
callerActivity = (ActivityListener) context;
}
@Override
protected String doInBackground(Object... params) {
.....//do something and get the credit
}
@Override
protected void onPostExecute(String response) {
callerActivity.setText(credit);
}
}