簡體   English   中英

從外部類到上下文的Android調用方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM