Android 添加回调方法扩展活动
我正在尝试扩展活动以定义一个可以从AsynchTask回调的标准方法。这是一个基本代码Android 添加回调方法扩展活动,android,events,android-activity,callback,implements,Android,Events,Android Activity,Callback,Implements,我正在尝试扩展活动以定义一个可以从AsynchTask回调的标准方法。这是一个基本代码 public class R3Activity extends Activity{ public void displayresult(String xmlresult){ }//displayresult } 现在,我通过扩展R3Activity创建的任何活动都可以实现displayresult方法 然后我使用它如下 public class MainActivity e
public class R3Activity extends Activity{
public void displayresult(String xmlresult){
}//displayresult
}
现在,我通过扩展R3Activity创建的任何活动都可以实现displayresult方法
然后我使用它如下
public class MainActivity extends R3Activity{
private void somemethod(){
DatabaseAccess dba = new DatabaseAccess();
dba.setActivity(this); // Pass a ref to the activity into the class with the Asynch task
dba.execute(new URL(database_url));
}
}
}
DatabaseAccess类应该是一个通用类,它使用AsnchTask启动并获取数据。我的问题是以一种通用的方式处理回调
public class DatabaseAccess extends AsyncTask<URL, String, String> {
private R3Activity m_activity;
public void setActivity(R3Activity activity) {
m_activity = activity;
}
@Override
protected String doInBackground(URL... params) {
//Connect to database etc
String strdata = "blah";
}
protected void onPostExecute(String result) {
if ((strdata != null) && (m_activity != null)) {
m_activity.displayresult(strdata);
}
}
}
我认为您应该使用
接口进行回调
。而且您可以很容易地做到这一点
interface AsyncTaskListener{
public void onTaskComplete(T result)
}
然后实现它
public class MainActivity extends Activity implements AsyncTaskListener
在AsycTask中,onPostExecute方法调用侦听器方法,如
objAsyncTaskListener.onTaskComplete(T result);
objAsyncTaskListener.onTaskComplete(T result);