0

アプリケーションを作成していて、特定のリソースに関連する設定を一貫して保存およびロードするための助けが必要です。例を挙げましょう。

10 個のスピナーがあるとします。これらはすべて同じ機能を持ちますが、意味が異なります。これらは同じ機能を持っているため、同じ にバインドできonItemSelectedListenerます。これにより、選択した値が処理されます。

では、各スピナーの設定も保存したい場合はどうすればよいでしょうか? たとえば、スピナー値が選択されている場合、キー「スピナーSOMETHING」= SOME_DATA を保存します。

問題は、これは何であるべきかということです。リスナーには次の署名があります。

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

位置と ID は、各スピナーに対して相対的に設定されるため、ここでは役に立ちません。

ただし、この場合はスピナー自体である親には、必要なすべての情報が含まれている必要があります。各スピナーのリソースIDを取得し、キー「スピナーID」を使用して設定を保存するためにparent.getId()を使用しようとしましたが、アプリにリソースを追加するとこれらのリソースIDが変更されるようです。キーが変わります。

ここで何をすべきですか?各スピナーの一貫した名前を返す単純なparent.getName()関数が見つからないようです。

ありがとうございました。

4

1 に答える 1

2

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

箱から出して利用できる人間が読める形式の識別子としては、が最適ですgetPrompt。これは、スピナープロンプトとして設定したものをすべて表示するだけです。これはOKの識別子である必要がありますが、プロンプトテキストを手動で変更すると、もちろん破損する可能性もあります。

したがって、最も壊れにくい方法は、tagすべてのビューに含まれる一般的なコンテナ内の識別子を指定することです。

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

すでにタグを他の目的で使用している場合、1.6以降のAPIには、複数のタグを指定し、インデックスを介してそれらにアクセスする機能が含まれています。古いバージョンのAPIをサポートする必要がある場合は、いつでもタグを、識別子と元のタグの両方を含むラッパーオブジェクトに設定できます。

于 2009-12-11T09:24:13.577 に答える