2014-02-21 31 views
2

我正在開發一個需要使用藍牙的應用程序。問題是我有幾個使用藍牙通信的活動,我正在創建一個可以進行通信的類。爲此,我需要將結果重新發送到該活動。 我想實現這樣的活動:強制子類在java中設置內部類

public abstract class MyCommunicationActivity extends Activity { 
    public static class MYHANDLER extends Handler{}; 
} 

我想迫使每個活動創建處理來自通信類的響應處理程序,因此它知道這個類將收到一個對象MyCommunication類該活動將波動一個作爲處理結果的處理程序的子類。 我已經這樣做了,但我的子類(擴展MyCommunicationActivity的)沒有強制執行處理程序。

我該怎麼做?可能嗎?

+0

有一個抽象方法'getHandler()'然後可以從子類中返回一個靜態成員變量。 –

+0

我認爲有更好的解決方案。請將處理程序作爲不同文件中的類實現,並使用Handler(Activity)構造它以訪問活動中的公共字段。這是某種構圖模式。 – RMachnik

回答

7

添加的方法是這樣的:

public abstract Handler getHandler(); 

這將迫使所有子類實現getHandler()並返回一個處理程序存在。

0

通過向其添加抽象成員來使內部類抽象化。

public abstract class MyCommunicationActivity extends Activity { 
    public static class MYHANDLER extends Handler { 
    public abstract void handle(); 
    } 
} 
+0

這不會編譯,因爲「MYHANDLER」不是抽象的,因此不能有抽象方法。 – flygoing