Androidとリソースのためのロード/環境設定を保存する - 一貫性を達成するためにどのように?

StackOverflow https://stackoverflow.com/questions/1886763

質問

私は、アプリケーションを作成し、一貫して特定のリソースに関連する設定を保存し、ロードといくつかの助けを必要としています。私は例をあげてみましょう。

私は10のスピナーを持っていると仮定します。彼らは皆、同じ機能が異なる意味を持ちます。彼らは同じ機能を持っているので、私はその後、選択した値を扱います同じonItemSelectedListener、それらをバインドすることができます。

まあ、私はまた、各スピナーのための環境設定を保存するために何をしたい場合は?スピナー値が選択されている場合たとえば、私は、キー "スピナーの SOMETHING の" = SOME_DATAを保存すると思います。

問題がある - の本の何かが何をすべきですか?リスナーは次のシグネチャがあります:

public void onItemSelected(AdapterView parent, View v, int position, long id)

それらは各スピナーに関連して設定しているとして

位置とidは、ここでは有用ではありません。

ただし、この場合にはスピナー自体である親は、私は必要なすべての情報を持っている必要があります。ので、私の設定がリセットになるだろうので、私は、各スピナーのリソースIDを取得し、キー「スピナーID」を使用して優先順位を格納するparent.getIdを()を使用してみましたが、あなたのアプリに多くのリソースを追加するときに明らかにこれらのリソースIDを変更しますキーが変更されます。

私はここで何をすべきでしょうか?私は私に、各スピナーの一貫性のある名前を返すいくつかの並べ替えの簡単なparent.getName()関数を見つけることができないようです。

ありがとうございます。

役に立ちましたか?

解決

getIdは、私はそのことを知っている唯一のことは、ビューに固有の参照を持っていますが、あなたが言うように、ビューアプリの次のビルドで同じIDを持っていない可能性がありますされます。

ボックスのうち利用可能な最善の人間が読み取り可能な識別子は、単にスピナーがプロンプトとして設定したものは何でもお見せ思われる、getPromptされるだろう。それはOK識別子でなければなりませんが、あなたは手動であなたのプロンプトのテキストを変更した場合、それはまた、当然のことながら、破損しやすいです。

最もブレイクプルーフの方法は、その後、一般的な容器に識別子を指定することです - tag - 。すべてのビューが含まれていること。

String myIdentifier = (String) parent.getTag();

あなたはすでに何か他のタグを使用している場合は、1.6以上のAPIは、いくつかのタグを指定して、インデックスを経由してそれらにアクセスする機能があります。古いAPIバージョンをサポートする必要がある場合は、常に、識別子、および元のタグの両方が含まれているラッパーオブジェクトにタグを設定することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top