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

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

AndroidのApplicationクラスはシングルトンであるため、派生クラスも同様です。AndroidはA、アプリケーションの起動時にクラスのインスタンスを1つだけ作成します。変更するだけ

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

すでにアプリケーションコンテキストをパラメーターとして渡し、コンストラクターで初期化しているようです。したがって、今必要abcなのは、次のようにコンテキスト変数を使用してAにアクセスすることだけです。((A) this.appContext).abc;

于 2013-02-08T15:24:17.070 に答える
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 に答える