[英]Android Call Method from External Class through Context
我的主要活動中有幾個AsyncTask類,每個類都從外部獲取少量數據,將它們存儲在內存中,然后在主要活動中調用一個用於顯示數據的方法。 我想將這些類移到它們自己的文件中,但是它們從主要活動中引用方法和變量。 有人提到的一種解決方案是像這樣將活動Context傳遞到AsyncTask中,以便調用所需的活動方法:
((ActivityName)mContext).methodYouWant(...)
((ActivityName)mContext).varYouWant
這是從外部類訪問主要活動的方法/成員的正確方法嗎?
可以,但是效果不佳。 顯然,它是不靈活的,並且會遭受將來的痛苦。
AsyncTask沒什么特別的,只是一個類。 這樣,如何讓Activity類定義一個偵聽器接口,然后將該偵聽器傳遞到AsyncTask的構造函數中,然后再調用該偵聽器呢?
public class MyActivity extends Activity {
public interface AsyncTaskCompleteListener {
public void onComplete(/* any data you want to share */);
}
...
private AsyncTaskCompleteListener myListener = new ...() {
// do stuff with data
}
private MyAsyncTask extends AsyncTask<Something,Something,Something> {
private AsyncTaskCompleteListener listener = null;
public MyAsyncTask(AsyncTaskCompleteListener listener) {
this.listener = listener;
}
protected void onPostExecute(Something result) {
if(listener != null) {
listener.onComplete(/*params*/);
}
}
}
...
}
只是一個想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.