5

私は、特定のアクティビティ(基本的に、小さなゲームのための「データモデル」)でアクセスする必要がある変数がたくさんあるAndroidアプリを書いています。現在、私はそれらをすべて1つの巨大な "コンテナ"クラスに格納していますので、私は自分のアクティビティクラスを汚染することなく簡単にそれらを参照できます。例:Androidのリソースシステムに似たものがありますか?

public class Model 
{ 
    private int a; 
    private String b; 
    private float c; 

    ... 

    public int getA() 
    { 
     return a; 
    } 

    public void setA(int a) 
    { 
     this.a = a; 
    } 

    public String getB() 
    { 
     return b; 
    } 

    public void setB(String b) 
    { 
     this.b = b; 
    } 

    public float getC() 
    { 
     return c; 
    } 

    public void setC(float c) 
    { 
     this.c = c; 
    } 

    ... 
} 

ご覧のとおり、これらはさまざまな種類のもので、すべてゲッタとセッタを備えています。しかし、このように保管するのは面倒です。私はまた、変数のグループを反復したいと思いますが、このフラットなゲッタ/セッタフォーマットでは、実際にはできません。

私はAndroidのリソースシステムについて認識していますが、変数がアプリ全体/グローバルではないため、これは適していないようです。これらは、この特定のアクティビティの生存期間中にのみ存在し、アクティビティが開始されるたびにプログラムによって生成されます。

私はそれらをすべてMap<String, Object>構造体に入れることを考えていました。ここで、各変数をStringキーで参照することができました。これは、地図上でputまたはgetを呼び出すことができるので、ゲッタとセッタがたくさんあるコンテナクラスを持つ必要がなくなります。しかし、地図から価値を得たいと思うときはいつでも、予想されるタイプにキャストする必要があります。私はその音が気に入らない。

誰かがより良い解決策を手に入れましたか?より小さな、より一時的なスケールで使用できるAndroidのリソースシステムに類似したものがありますか?

+0

を。それがあなたが意味するものなのかどうかはわかりません。 – Tooroop

答えて

0

なぜ、これらがアクティビティの状態をモデル化することになっているのかわからないのですが、モデルオブジェクトごとに実際のクラスを定義しただけではありません。それが私の提案です。ここではCクラスのような手続き型アプローチを採用しています。また、コードには静的ゲッターやセッターが表示されないため、何らかの方法でコンテナクラスを作成してアクセスする必要があります。この小さなスニペットに基づいて、より多くの文脈がなければ、より良い答えを与えるのは難しいです。

+0

各モデルオブジェクトのクラスを定義しますか?私はあなたがこれによって何を意味するか分かりません... –

0

アクティビティごとにカスタムXMLリソースファイルを定義できます。これらのファイルは、/ srcフォルダと同じレベルの/ xmlフォルダに格納されています。それらをロードするには、Resourcesクラスを使用します。

それとも、この問題を見て取る:あなたは、クラスを作成し、変数はあなたがどこでも変数にアクセスすることができ、静的な場合Dynamic Resource Loading Android

関連する問題