5

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

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

    ...
}

ご覧のとおり、それらはさまざまな型であり、すべてにゲッターとセッターがあります。しかし、このまま保管するのは面倒です。また、変数のグループを反復処理したいのですが、このフラットな getter/setter 形式では実際にはそれができません。

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

Map<String, Object>それらすべてを構造体に入れ、String キーを介して各変数を参照できるようにすることを考えていました。これにより、マップ上でputorを呼び出すだけで済むため、多数のゲッターとセッターを含むコンテナー クラスを用意する必要がなくなります。getしかし、マップから値を取得したいときはいつでも、期待される型にキャストする必要があります。私はその音が好きではありません。

誰もがより良い解決策を得ましたか? より小規模で一時的な規模で使用できる、Android のリソース システムに似たものはありますか?

4

2 に答える 2

0

これらがアクティビティの状態をモデル化することを意図している場合、各モデルオブジェクトの実際のクラスを定義しただけではない理由はわかりません。それが私の提案です。ここでは、非常にCに似た手続き型のアプローチを採用しており、それらを1つのクラスにまとめてダンプするだけです。また、コードには静的なゲッターとセッターが表示されないため、何らかの方法でコンテナークラスを作成してアクセスする必要があります。この小さなスニペットに基づいており、コンテキストがないと、より良い答えを出すのは困難です。

于 2012-12-12T13:32:48.377 に答える
0

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

または、この問題をご覧ください:Androidの動的リソース読み込み

于 2012-12-12T15:30:11.560 に答える