0
我正在擴展活動來定義一個標準的方法,我可以從一個AsynchTask回調。這是一個骨架代碼。擴展活動添加回調方法
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);
}
}
}
現在m_activity.displayresult可以工作,因爲此方法在R3Activity的每個實例中都可用。
如何讓displayresult()觸發我可以在每個Activity中實現的事件處理程序。
喜歡的東西....
public class MainActivity extends R3Activity implements DatabaseResultListener {
public void DbCallback(){
//This gets triggerred by the displayresult callback
}
}
此外,你可以看到這個帖子。我發現它非常有用:http://www.codeproject.com/Articles/162201/Painless-AsyncTask-and-ProgressDialog-Usage?fid=1612106&df=90&mpp=10&noise=3&prof=True&sort=Position&view=Expanded&fr=21#xx0xx – Yury 2012-07-12 11:13:19
謝謝。事實證明,這非常有幫助。現在我唯一的問題就是如何確保用戶在Activity中基於我的活動調用超級事件。 – user1325094 2012-07-12 17:13:41