2012-03-22 8 views
0

私はプロパティを格納するために問題を抱えているが、アンドロイドにファイルを、これはコードされたファイル:Androidアプリ

Properties prop = new Properties(); 
prop.load(context.getResources().openRawResource(R.raw.config)); 

Utils.log(context,"db.version =>"+ prop.get("db.version")); 

prop.setProperty("db.version", "2"); 
String fileName = context.getResources().getString(R.raw.config); 
FileOutputStream fos = new FileOutputStream(fileName); 
prop.store(fos, ""); 

私はロード(および印刷)しようとすると、問題はありませんが、ときに私私の新しいセットを保存しようと、私はここにLogCatにFileNotFoundException

を受け取る:事前に

03-22 18:05:03.262: INFO(11536): db.version =>1 
03-22 18:05:03.262: ERROR(11536): java.io.FileNotFoundException: /res/raw/config.properties (No such file or directory) 

感謝を...

+0

これは 'pro.load(YOUR_CLASS_NAME.class.getResourceAsStream(" config.properties "));' –

+0

か、 config.properties "));' –

答えて

0

.apkのファイル部分を書き込もうとしています。実行時にアプリケーションのapkから何かを更新することはできません。

読書は問題ありません。そのため、そこに問題はありません。あなたには、いくつかの設定を保存したい場合は、このチェックすることをお勧めします:http://developer.android.com/guide/topics/data/data-storage.html#pref

2

を私はすでにazertitiが私を示唆するもの読んでいた、しかし、私は、しかし、私が使用するキーと値のペア

を管理するための簡単な方法があったと思いました

:、I /書き込みプロパティ値を読み取るために(アクティビティクラスの)メソッドと呼ばれた後の最初のSharedPreferences

、私は

のres/XML/conf.xmlに
<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <PreferenceCategory 
     android:title="My preference" 
     android:key="preference"> 

     <CheckBoxPreference 
      android:key="pwd_request" 
      android:defaultValue="true" 
     /> 

    </PreferenceCategory>   
</PreferenceScreen> 

をプロパティxmlファイルを作成しました私の意見では

//read... 
PreferenceManager.setDefaultValues(this, R.xml.conf, true); 
userProps = PreferenceManager.getDefaultSharedPreferences(this); 
Utils.log(this, userProps.getBoolean("pwd_request", false)); 
//...and write 
edit.putBoolean("pwd_request", false); 
edit.commit(); 

: 私が書いたことはそれを行うための正しい方法であれば、私は知らないが、私はプロパティフィールドを管理するための素敵なAndroidのアーキテクチャではないと思うが、それは、従来のJavaのマージですプロパティとユーザーインターフェイスを管理するメソッド....なぜ私は自分のプロパティCheckBoxPreferenceを宣言する必要がありますか?..それは単なるプロパティです。

+0

あなたが使用したPreferenceScreenは、データを保存するのではなく、プリファレンスでアクティビティーを表示するために設計されています。事前定義された値を持ついくつかの値を保存する場合は、最初にSharedPreferencesを使用して保存する方法よりも元のポストの方法を使用して値を読み込むことができます。これらのデフォルトを提供するもう1つのオプションは、プロパティが定義されていない場合(getBooleanのコードなど)にデフォルト値として持つことです。これらのいずれの場合でも、PreferenceScreenは必要ありません。また、それを行うには良い方法でもありません。 – azertiti