Archive

Archive for September, 2010

Android: Preferenceで複数の設定を保持する

September 4th, 2010 No comments

Androidでデータを永続化しようと思うといくつかの方法が考えられます

  1. テキストとかを普通にFileIO
  2. SQLite
  3. Preference

この中で一番簡単なのがPreferenceです
なんと専用のlayoutを用意すればデータの入力と保存を勝手にやってくれます
保存形式はXMLで、ファイル名は指定しなければデフォルト値(パッケージ名)が使用されます
今回の目的である複数の設定を保持したい場合には任意で指定することも可能です
※例えば、twitterのアカウント情報を複数保存したり

Preferenceを任意の名前で保存するサンプル

package net.yusukezzz.preferencetest;

import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class PreferenceTest extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent i = getIntent();
        String filename = i.getStringExtra("filename");
        getPreferenceManager().setSharedPreferencesName(filename);
        addPreferencesFromResource(R.xml.setting);
    }
}

で、res/xml/setting.xmlを用意すればOKです
実際にアカウント情報を保存する場合はsetSharedPreferencesModeでMODE_PRIVATEとか指定すればいいのかな?
XMLは /data/data/パッケージ名/shared_pref/filename.xml に保存されます

この例ではファイル名をIntentで渡しています
Preferenceで保存できるのはKey:Valueな値なので、もっと複雑なデータを保存したいという場合は他の手段の方がいいでしょう
また、PreferenceはEditText値は入力されている値を一覧できない(入力時しか見れない)のでユーザビリティは悪いと思います

最初は自力でXMLで保存しようと思ったのですが、
2.1以下のAndroidでDOMを保存するのが面倒(javax.xml.transformは2.2以降から)だったのと、
保存したいデータが単純なKey:Valueな値しかなかったということでPreferenceで済みました
一応、DOM以外にXMLを生成する手段としてserializerというのが用意されています(android.util.Xml)

java(Android)ってXMLの保存かなり面倒じゃないですか?transformとかserializerとか…読み出しは充実してるのに;

Tags:

vimperatorのcolorscheme

September 1st, 2010 No comments

いい加減colorscheme使うかーと思ってdefault.vimpって名前で保存したら反映されなかった
:colorscheme default
とかコンソールから叩いても全く変わらない
どうやらdefaultは予約語か何からしい
エラーも何もないからしばらく気づかなかった…