2011-04-26 41 views

回答

4

增添幾分對屋大維的回答,你實際上有一個單一的處理程序類,但每個活動一個實例。

例如:

public class MyHandler extends Handler { 
    // Keep a weak reference to the activity owning the handler 
    private WeakReference<Activity> activityRef; 

    public MyHandler(Activity a) { 
    this.activityRef = new WeakReference<Activity>(a); 
    } 

    public void handleMessage(Message msg) { 
    // do your stuff here, for instance, finish the activity 
    if (activityRef.get()!=null) { 
     activityRef.get().finish(); 
    } 
    } 
} 
在活動

然後:

public class MyActivity extends Activity { 
    protected MyHandler handler; 

    public void onCreate() { 
    // This is where you'll re-use the handler code 
    handler = new MyHandler(this); 
    } 
} 
+0

嗯有趣。我認爲Listener的意思是說Handler,現在當我坐下來思考它時,我意識到確實存在一個Handler類。 :D – 2011-04-26 13:27:56

+0

那麼推理是一樣的,它只是擴展的類或實現的接口將會改變。 – 2011-04-26 13:30:07

+0

感謝馬文和屋大維爲您提供的答案。現在我想通過片段類型,如一個活動是主人,另一個是奴隸活動。 – Mak 2011-04-26 13:53:16

-2

聲明此處理程序爲static並訪問它:MyClass.myHandler

+0

這不是最好的主意。 – 2011-04-26 13:17:03

+0

爲什麼這不是最好的主意。爲什麼處理程序不能是靜態的? – senzacionale 2012-12-03 16:04:39

2

當然。創建一個實現所需接口並在需要時實例化的新類。

讓我們以OnClickListener爲例。創建一個班級ExternalClickListener

public class ExternalClickListener implements View.OnClickListener { 

    @Override 
    public void onClick(View v) { 
     // Do whatever you want. 
    } 

} 

現在,當你想將其放置在Button它會是

btn.setOnClickListener(new ExternalClickListener()); 
+0

感謝Octavian和Marvin爲您提供的答案。現在我想通過片段類型,如一個活動是主人,另一個是奴隸活動。 – Mak 2011-04-26 13:54:13

相關問題