1

ファイルを設定ファイルとして使用するために、アセット ディレクトリからファイルを読み込もうとしています。AssetManager はそれを見つけることができません。config.global と config.properties はどちらもプロジェクトの assets ディレクトリにあります。config クラスは setUp() 関数で生成され、次に readConfig を呼び出して開始します。メインファイルのコードは次のとおりです。

protected void setUp() throws Exception {
    super.setUp();
    mLithium = (LithiumExtension) Trio.getInstance(new LithiumExtension(this))
            .getExtension();
    config = StorefrontConfig.getInstance();
    Resources resources = getActivity().getResources();
    AssetManager asM = resources.getAssets();
    InputStream in = asM.open("config.global");
    OutputStream out = asM.openFd("config.properties").createOutputStream();
    config.readConfig(in, out);
    setTestSettings();
}

Config のコード:

public class Config {

private static Config instance;
public Properties prop;

static {
    instance = new Config();
}

private Config () {
    prop = new Properties();
}

public void readConfig(InputStream in, OutputStream out) {

    try {

        prop.load(in);
        in.close();

        prop.store(out, "yay");
        out.close();
    }
    catch (Exception e) {
        System.out.println("Failed to create properties");
        System.exit(3);
        Log.d("Config", "Failed to create properly initialized config class");
    }
}

public static Config getInstance() {

    if(instance == null)
        instance = new Config();
    return instance;
}

public String getProperty (String key) {
    return prop.getProperty(key);
}
}

java.io.FileNotFoundException実行すると、 forを取得しconfig.globalます。asM.open("config.global")これは、コードの行でスローされます。しばらくこれで立ち往生。どんな助けでも大歓迎です!

4

1 に答える 1

2

内部でコンテキストを受け取りsetUp(Context c)、これを使用してアセットを取得します

変更してみてください

 AssetManager asM = resources.getAssets();

AssetManager asM = c.getAssets();
于 2013-07-16T18:30:55.423 に答える