Flex、AIR、Java、Androidなど

Archive for 5月 21st, 2009

For English Speaker:
First release of Motion Task Switcher and full source of it can be viewed here(May be too old because it is published on February, 2009).
Some other tips such as how to handling Component, ApplicationInfo, Name of Application, getting Application icon can be found here.
** Version 1.0.1 **
+ Sensor sensibility now adjustable.
+ Pauses sensor [...]

引き続きWorld’s Interests widgetをいじっているのですが、なぜかSharedPreferenceに保存しているはずのデータが書き換えられたり、正常に取得できないことがあり、困っていました。
現在それと並行して新しいアプリを作っていて、それに関してももう完成したので上げようかと思っているのですが、こっちをいじっているうちにListPreferenceのsetDefaultValue(Object obj)が効かないことに気がつきました。
そこでApi demoを見てみたところ、ListPreferenceのsetEntryValues(CharSequence[] entryValues)に文字列の配列を渡していました。私は数値のみの文字列の配列を渡していたのですがこれがいけなかったようです。
つまり、修正前は
ListPreference lp = new ListPreference(this);
String[] entries = {"First", "Second", "Third"};
String[] entryValues = {"0", "1", "2"}; //実際にはResourceから取得
lp.setEntries(entries);
lb.setEntryValues(entrieValues);
/*
lp.setDefaultValue("0"); // 効かない
lp.setDefaultValue(0); // 効かない
*/


こうやっていました。これだとコメントにある通り、setDefaultValueが効きません(何もチェックされません)。
これをApi demoを参考に
ListPreference lp = new ListPreference(this);
String[] entries = {"First", "Second", "Third"};
String[] entryValues = {"zero", "one", "two"};
lp.setEntries(entries);
lb.setEntryValues(entrieValues);
/*
lp.setDefaultValue("zero"); // 効く
*/



これだと問題なくチェックされます。
これでsetDefaultValueが効くようになったので良かったのですが、さらにこれにより最初に書いたListPreferenceを使用して決定する項目をSharedPreferenceから取得する際にうまく取れない現象も解決しました。
私はコード一番がすっきりするだろうと思い、取得した”0″や”1″などのStringをparseIntで数値にしてswitch文でキーワードやインターバルを決定していたのですが、”1″が入っているはずなのに”0″になることが多く、例外も投げられないので困っていました。
まあひとまずListPreferenceのentryValuesには数値のみの文字列の配列ではなく、識別子のような文字列をつけるべきということが分かってよかったです。


Categories

 

2009年5月
« 4月   6月 »
 123
45678910
11121314151617
18192021222324
25262728293031

About

Author: tachibana

  • ちょっとしたことはTwitterに書いています。こっちはアプリの公開等の時に更新されます。
  • 最近はもっぱらJavaとObjective Cです。AS3は飽きました。
  • スクリプト言語ではPerlが好きでしたが最近はGAE/Jで何でもやってます。
  • Linuxは自宅サーバー建てるのがやっとのレベルです。前の会社で何日も徹夜してやったのはいい思い出です。
  • アプリへのご要望などご意見等ありましたらお気軽にご連絡下さい。

Alternative content here