5

我正在编写一个 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;
    }

    ...
}

如您所见,它们属于不同的类型,并且都有 getter 和 setter。但是像这样存储它们变得很麻烦。我还想迭代变量组,但是使用这种扁平的 getter/setter 格式,我真的不能这样做。

我知道 Android 的资源系统,但它似乎不适合这个,因为变量并不意味着是应用程序范围/全局的。它们仅在此特定活动的生命周期内存在,并且在每次活动开始时以编程方式生成。

我正在考虑将它们全部放入一个Map<String, Object>结构中,在那里我可以通过字符串键引用每个变量。这将消除对具有大量 getter 和 setter 的容器类的需要,因为我可以在地图上调用put或。get但是,每当我想从地图中获取值时,我都必须转换为预期的类型。我不喜欢那样的声音。

有人有更好的解决方案吗?有没有类似于 Android 的资源系统可以在更小、更临时的规模上使用?

4

2 回答 2

0

您可以为每个活动定义一个自定义 xml 资源文件。这些文件存储在与 /src 文件夹相同级别的 /xml 文件夹中。使用 Resources 类来加载它们。

或者看看这个问题:Dynamic Resource Loading Android

于 2012-12-12T15:30:11.560 回答
0

我不知道为什么,如果这些是为了对 Activity 的状态进行建模,那么您不只是为每个模型对象定义了实际的类。那将是我的建议。您在这里采用了一种非常类似于 C 的程序方法,只需将它们一起倾倒在一个类中。此外,由于您的代码没有显示静态 getter 和 setter,因此您必须以某种方式创建和访问容器类,不是吗?基于这个小片段并且没有更多上下文,很难给你一个更好的答案。

于 2012-12-12T13:32:48.377 回答