2011-02-03 19 views
3

私のアプリでは、ユーザーが選択できるかなり複雑な設定オプションがあります。私は現在、これらのオプションのユーザーインターフェースとしてPreferenceActivityを使用しています。オプションは共有プリファレンスを使用して保管されています。ペアの複雑な設定画面を実装する最も良い方法は?

  • リスト:設定のいくつかの例として、I収容しなければならない背景パターンを選択するために、ユーザは、各形状が.PNGである(1〜5の異なる形状の使用を選択することができファイル)を作成し、各図形にint色を割り当てます。例えば、ユーザは、オレンジ色の四角形、緑色の三角形、赤色の四角形を選択することができる。

  • 階層的なデータ:私のアプリの一部は、5つのモードのいずれかを使用するように設定できます。各モードには、いくつかの固有の固有の設定が関連付けられています。あるモードでは2つの整数を選択する必要があり、もう1つのモードでは1つのブール値を選択する必要があります。

しかし、私の気持ちはのでPreferenceActivityは上記のような設定でうまく動作しないです:共有設定のリストを格納することはできません

  • 共有設定には階層データを格納できません。
  • 私の好みのインターフェースを沸騰させて、例えば以下のようにします。各色を設定したり、現在のモードには適用されない設定を無効にするために依存する設定を使用するための個々の設定ボタンは、使いにくく使いにくいインターフェースを作ります。

リストを設定するための独自のプリファレンスクラスを作成することもできますが、これらの実装は、典型的なビューを実装するのに比べて面倒であり、ストレージの問題に対処する必要があります。

私の計画されました:

  • ちょうどカスタムGUIでカスタムアクティビティを実装します。これにより、リストを構成するためのすばらしいインターフェースを実現するための自由度が増し、現在のモードには適用されないオプションのインテリジェントな非表示を行うことができます。
  • すべての設定をXMLファイルに保存するか、Javaオブジェクトをシリアル化して保存します。これは、階層データと可変長リストを簡単にサポートできることを意味し、さらに拡張する余地があります。

この計画は妥当と思われますか?私はAndroidのやり方をしていないのではないかと心配していますが、共有された設定やPreferenceActivityは私のニーズには適していないようです。

答えて

1

私はAndroidで始まって以来、私はいつも自分の好みのアクティビティを作成しています。それはインターネット上でそれを行う方法に関する多くのドキュメントがないので本当に難しいようですが、実際には非常に簡単です。あなたが言ったように、それはあなたのUIがどのように見えて行動するかを決める上でより多くの自由を与えます。かなりそれはあなた自身の好みを取得することがいかに簡単です

public class myprefs extends Activity{ 
private static final String PREFS_XML = "prefs_xml"; 
private static final String PREF_1 = "pref_1"; 

String preference; 

private SharedPreferences preferences = null; 
public void loadPrefs(){ 
    preferences = this.getSharedPreferences(PREFS_XML, Activity.MODE_PRIVATE); 
    preference = preferences.getString(PREF_1, "default value"); 
} 
} 

:念のためにあなたの好みを自分で行う方法を迷っている、ここで少し簡単なスニペットです。それらを設定するには、あなたがにそれを置きたいのonClick、onItemSelected、または任意の他の「イベント」に入れることができ

preferences.edit().putString(PREF_1, "hello!").commit(); 

を使用しています。私は「プリファレンス」をクラス全体のインスタンスにして、クラス内のどこにでも再インスタンス化することなくアクセスできます。これがあなたを少し助けてくれることを願っています。あなたの特定の質問に対する具体的な答えとして、私はあなたの計画が完全に合理的だと思うでしょう。

+0

アドバイスをいただきありがとうございます。私は既にいくつかのカスタム設定ウィジェットを扱っている作業環境設定画面を持っていますが、作業をするのは面倒であり、私が言及した保存/読み込みとインターフェースの問題があります。私の計画は、あなたが持っているものと一緒に行くことでした。私は、Javaのシリアライゼーションを使うことを優先してsharedpreferencesを避けるでしょう。たとえば、私は物事をArrayListに張り、これを永続リストに保存することができます。 – rbcc

関連する問題