2013-02-21 51 views
0

我使用擴展Application類的模式來保存我的全局變量(https://stackoverflow.com/a/708317/1709805)。從我的Android組件(ActivityFragmentService,ecc)我使用((MyApp) getApplicaction())訪問它們,但在我的項目中,我有很多幫助程序類,我無法(顯然)使用該方法。爲了解決這個問題,我使用了一個返回應用程序的靜態方法。這是代碼:Android:使用靜態方法獲取應用程序

public class MyApp extends Application{ 

    private static MyApp app; 

    @Override 
    public void onCreate(){ 
     super.onCreate(); 
     app = this; 
    } 

    public static MyApp getApp() { 
     return app; 
    } 
} 

它是一個很好的模式?任何建議以更好的方式達到我的目的?謝謝

回答

3

這是一個不好的做法。

只需在整個應用程序中使用MyApp app = (MyApp)getApplicationContext();即可。

確保您已聲明MyApp的在AndroidManifest.xml標籤的<application>文件

你必須做的是,當你要訪問其他非Android的組件類MyApp app對象,然後通過MyApp app作爲一個argument of Constructor or Method來自Android組件類(活動,片段,服務等)的非Android組件類(Helper,Handler或其他Java類)。

+0

好的..我評估過這種可能性。這是一個可以肯定工作的解決方案..但我很懶,所以我不希望將MyApp的引用傳遞給每個類或方法;)。爲什麼我的方法是錯的? – user1709805 2013-02-21 10:06:48

相關問題