2016-09-29 9 views
-2

私は、他の多くのアクティビティによって拡張されたアクティビティAを持っています。アクティビティAの変数は、それを拡張する他のすべてのサブアクティビティ(クラス)によって使用されます。私はサブアクティビティからその変数の値を設定できるかどうかを知りたいのですが、アクティビティAを拡張する他のすべてのサブクラスに変更が反映されるようにします。 私はその基本的な質問をよく知っています。 。サブクラススーパークラス変数を初期化することができます

eg: 
Activity A has 
public String global = "ABC" 

Activity B extent A 
display(global); ---> ABC 

Activity C extent A 
display(global); ---> ABC 

Activity D extent A 
display(global); ---> ABC 

アクティビティDのグローバルを変更して、アクティビティBとCも影響を受けるようにする方法を教えてください。

+1

*インスタンス変数の場合、変更はそのインスタンスにのみ影響します*。静的な変数が必要かもしれません。 –

+0

http://stackoverflow.com/questions/1944656/android-global-variableこれは私の問題を助けてくれてありがとう –

答えて

1

変数whosの値を維持したいと思うように思えます。

しかし、あなたが唯一の更新または変数を読むことができるようにあなたの継承されたクラスにしたいので、あなたはこのような何か行うことができます:あなたの静的な無効メインで

class A 
{ 
    private static int your_var = 0; 

    public int get() 
    { 
    return your_var; 
    } 
    public void set(int a) 
    { 
     your_var = a; 
    } 
} 

class B extends A 
    { 

    } 

    class C extends A 
    { 

    } 

を:

new B().set(101); 

    new C().get() // this will return value 101. 

注:ここでは変数your_varのコピーが1つだけ作成されます。それはプライベートなので、静的でないゲッターセッターメソッドだけがそれを読んだり変更したりすることができます。したがって、それを格納するクラス自体または子クラスオブジェクトのいずれかによってのみアクセス可能にする。

0

あなたは、静的変数は、クラスの変数ではなくオブジェクトの活動A.

に静的変数を作成する必要があります。

+0

私はアクティビティAで静的変数を使用し、アクティビティB(アクティビティAを拡張)でその値を変更しましたが、アクティビティC(Aを伸ばす)と呼ばれる変化は起こらなかった。 –

0

次のことを試してください:クラスの

クラスBで
public static String global = "ABC"; 

public class B extends A { 


    public static void main(String[] args) { 
    B b = new B(); 
    A a = new A(); 
    System.out.println(b.global); 
    System.out.println(a.global); 
    System.out.println(global); 
    } 

} 

代わりにあなたはカプセル化で動作するように試みることができる:プライベートとして文字列をマークし、「グローバル」の文字列を作りますgetterとsetterを介して利用できます。これは、多くの場合、あなたがグローバルデータを保持することができ、必要なときにシングルトンクラスの単一一般的に共有インスタンスからデータを取得することができシングルトンクラスを持つことができ、その後、静的変数

http://www.tutorialspoint.com/java/java_encapsulation.htm

0

での作業がより柔軟なソリューションです。しかし、もっと良い方法があります。

アクティビティの上に座るクラスが必要です。どのアプリでも、エンティティを配線してアプリケーションを開始するクラス(Initilizerやメインクラス、マネージャクラスなど)が1つあります。

アンドロイドには、グローバルデータを保持できるアプリケーションクラスがあります。参照のために参照してくださいAndroid global variable

関連する問題