AsynchTask에서 콜백 할 수있는 표준 메소드를 정의하기 위해 Activity를 확장해야합니다. 여기에 스켈레톤 코드가 있습니다.활동 확장하기 콜백 메소드 추가하기
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);
}
}
}
이 메서드는 R3Activity의 모든 인스턴스에서 사용할 수 있으므로 m_activity.displayresult가 작동합니다.
모든 활동에 구현할 수있는 이벤트 처리기를 트리거하려면 displayresult()를 어떻게 얻습니까?
뭔가 같은 ....
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
고맙습니다. 그것은 매우 도움이되는 것으로 밝혀졌습니다. 내 유일한 문제는 이제 어떻게 내 활동에 기반한 활동에서 사용자가 슈퍼를 호출하는지 확인하는 것입니다. – user1325094