5

我创建了一个这样的自定义应用程序类:

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?????
     }
}

如何在 foo 方法中访问 A 类的 abc 字符串变量。

4

4 回答 4

5

getApplicationContext您可以通过Context良好的铸造获得 Application 类

((A) this.ctx.getApplicationContext()).abc;
于 2013-02-08T15:34:18.410 回答
1

Android 中的Application类是单例的,因此您的派生类也是如此。AAndroid在启动您的应用程序时只会创建您的类的一个实例。只是改变

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;
于 2013-02-08T20:57:42.450 回答
0

不要传递 Context,而是尝试传递 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()或以后。

于 2013-02-08T15:27:48.937 回答
0

看起来您已经将应用程序上下文作为参数传递并在构造函数中对其进行了初始化。因此,您现在所要做的就是使用上下文变量来访问abcA ,如下所示:((A) this.appContext).abc;

于 2013-02-08T15:24:17.070 回答