Activity を拡張して、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);
}
}
}
このメソッドは R3Activity のすべてのインスタンスで使用できるため、m_activity.displayresult が機能するようになりました。
すべてのアクティビティに実装できるイベント ハンドラーをトリガーする displayresult() を取得するにはどうすればよいですか。
何かのようなもの....
public class MainActivity extends R3Activity implements DatabaseResultListener {
public void DbCallback(){
//This gets triggerred by the displayresult callback
}
}