0

目前正在通过 Eclipse 和 JUnit 为 Android 创建一个测试框架。我要实现的最后一件事是配置文件和阅读器,以便在必要时可以使用配置文件更改各种属性。我的框架结构如下:

MainFramework (project)
  Base package
  Utility package
    Config class

Testing (project)
  examples package
    Artist testing class

配置类如下:

公共类配置{

private static Config instance;
public Context context;
public static Properties prop;

public static StorefrontConfig getInstance(Context context) {

    if(instance == null)
        instance = new StorefrontConfig(context);
    return instance;
}

protected StorefrontConfig(Context cont) {
    context = cont;
    AssetManager manager = context.getAssets();
    try {
        InputStream instream = manager.open("config");
        readConfig(instream);
    }
    catch (Exception e) {
        Log.d("cool", "Failed to create properly initialized config class");
    }
}

private static void readConfig(InputStream instream) {

    try {
        String line = "";
        BufferedReader read = new BufferedReader(new InputStreamReader(instream));

        while ((line = read.readLine()) != null) {
            String[] split_line = line.split("=", 2);
            prop.setProperty(split_line[0], split_line[1]);
        }

        prop.store(new FileOutputStream("config.properties"), "Default and local config files");
        read.close();
    }
    catch (Exception e) {
        Log.d("cool", "Failed to create properly initialized config class");
    }
}

public String getProperty (String propertyKey) {

    try {
        return prop.getProperty(propertyKey);
    }
    catch (Exception e) {
        Log.d("cool", "Failed to access property");
        return null;
    }
}

public Context getContext () {
    return context;
}

当我在代码中调用 getProperty() 方法时,它总是返回 null。但是,我不知道它最初是否无法读取和写入值或发生了什么。我所知道的是,我的程序使用硬编码值,但在使用此类并在需要的代码中通过 config.getProperty() 引用它时(我的主框架有一个由所有测试继承的 Config 类)。

任何帮助将非常感激。我唯一能想到的是Java的Properties类不能与Android一起使用?

4

1 回答 1

0

Java 的属性可以与 Android 一起使用。

看起来您没有实例化prop,这可能会导致NullPointerException您调用prop.getProperty(propertyKey). 在某些时候,您需要prop使用prop = new Properties();. 看看这些例子。2 号可能会让您的生活更轻松,因为您不需要像在readConfig().

于 2013-07-16T05:10:51.787 回答