如何使用一个AsyncTask类在Android中应用不同的Activity

时间:2012-11-13 03:45:36

标签: android

我有一个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类,以便我可以调用它并获得信用。

1 个答案:

答案 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);
   }


}