2012-10-31 17 views
3

我是新來的Java & Android開發,但我已經能夠創造功能的混亂,子類&常數MainActivity類裏面粘貼時完全正常工作一個默認的Android項目。移動代碼Android的MainActivity類別自己的庫或文件

這些功能的目的是「ping家」讓我的服務器知道什麼時候發生應用程序安裝。即要做到這一點所需的唯一代碼的MainActivity.java代碼這個標準塊內的行notifyMyServer()

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     notifyMyServer("install"); /* Notify MyServer of an Installation */ 

    } 
} 

粘貼的功能,子類,常量和進口,使notifyMyServer()工作直接內MainActivity.java文件看起來髒對我來說。我希望能夠將它們移動到他們自己的文件和/或庫中,以便我可以將該文件拖放到我想要執行的其他應用程序中執行相同的跟蹤。

這通常是如何完成的?

回答

2

把你的通知代碼,並創建只是執行該通知的類(可以是庫的一部分與否):

public class NotifyingActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     notifyMyServer("install"); /* Notify MyServer of an Installation */ 
    } 
} 

,然後在MainActivity,剛剛從NotifyingActivity而不是Activity繼承。然後,當您在MainActivity中調用super.onCreate()時,通知將自動發生。

+0

謝謝蒂姆。我這樣做了,但是現在我試圖運行它時會遇到很多NullPointerExceptions。 – ccagle8

3

至少有兩種方法來解決這個問題:

1)創建NotifyActivity類可通過MainActivity被擴展,如在@Tim's answer說明。這使用繼承。

2)創建NotifyServer類和創建的MainActivity內它的一個實例,無論是作爲一類的變量或作爲onCreate()的局部變量。這使用組合。

通常在面向對象的設計中,組合優於繼承。我強烈建議您瞭解這兩個概念,因爲您將在Java編程中反覆使用它們。

相關問題