2013-02-08 42 views
2

我創建了一個自定義應用程序類是這樣的:如何在具有ApplicationContext對象的簡單Java類中訪問Android自定義應用程序對象?

class A extends android.app.Application{ 
    public String abc = "xyz"; 
} 

而且我有一個簡單的Java類

class B { 
    private appContext; 

    // This constructor is called from activity. 
    B(Context ctx){ 
     this.appContext = ctx; 
    } 

    private void foo(){ 
      // want to access Class A's abc String vairable Here...HOW TO DO THAT????? 
    } 
} 

如何訪問類的ABC字符串中FOO方法vairable。

回答

1

您可以從Context與良好的鑄造

((A) this.ctx.getApplicationContext()).abc; 
0

看起來您已經將應用程序上下文作爲參數傳遞並在構造函數中初始化它。所以你現在要使用上下文變量來訪問A的abc,如下所示:((A) this.appContext).abc;

+0

getApplication()是一種活動方式,他的B類不延伸活動 – 2013-02-08 15:47:56

0

而不是傳遞一個上下文,而是嘗試傳遞一個Application類的實例。

喜歡的東西:

class B { 
    private Application app; 

    // This constructor is called from activity. 
    B(Application ctx){ 
     this.app = ctx; 
    } 

    private void foo(){ 
      app.abc; //Do what you want 
    } 
} 

並調用b類似:

B b = new B(getApplication()); 

確認這是onCreate()或更高版本。

1

Application類Android是一個獨立的,並因此如此,你的派生類中獲得與getApplicationContext Application類。 Android將在您的應用程序啓動時僅創建您的類A的一個實例。只要改變

class A extends android.app.Application { 
    public String abc = "xyz"; 
} 

class A extends android.app.Application { 
    public static String abc = "xyz"; 
} 

,你可以從像這樣的任何地方引用它:

String foo = A.abc; 
相關問題