2011-01-31 2 views
7

私は多くのEditTextを持つフォームを持っています。特定のボタンを押すと、これらのコントロールをすべて取得してHashMapに入れて、キーが名前になるようにします(key1 intは次のコードです)。 )EditTextのxml idを取得する方法

<EditText android:id="@+id/key1" 
     style="@style/keys" /> 

と値、ユーザーが入力したテキストの値。

私の質問は、どのようにHashmapのキーのEditTextの名前を取得できますか? getId()は数値を返します。

おかげ

+1

その名前を使用する予定はありますか? 'findViewById()'のようなメソッドは、 'int'というIDをパラメータとして受け取ります。 –

+0

findViewByIdは誰ですか? EditText、ScrollView、Layoutのフォームを試してみましたが、それらのすべてがEditTextへの参照を返します(例えば[email protected])。 – xain

答えて

2

私は最終的にアンドロイド:タグとgetTag()を使用して解決しました

3

Androidのは、あなたのプロジェクトをビルドするたびR.javaでそのビューのハンドルを生成します。例えば、あなたが構築したら、R.id.key1を呼び出すことによってEditTextにアクセスすることができます。コード内でいつでもIDに直接アクセスできるため、idsをどこにでも格納する必要はありません。このIDでfindViewById()と呼ぶことができます。dave.cには、XMLから必要なビューを得ることができます。

+0

お返事ありがとうございます。ペアのキー/値をWebサービスに送信する必要がある場合はどうすればよいですか?そのような場合、私はキーが常に同じであることが望ましく、ウェブフォームでのやり方のように、 "可読な"ものが望ましい。 – xain

+1

@Xain:常に同じにする必要がある場合は、変更しないようにする必要があります。あなたは開発者としてIDを完全に制御できます。それは私がWebサービスへのキーのIDを使用することを避けると言われています。代わりに、他のWebサービスキー(おそらくWebServiceKeysのような静的クラス)でグループ化されたpublic static Stringのようなものを使用します。ビューIDはこの目的のためのものではありません。 – McStretch

+0

まあ、Androidはあなたのために 'int' idを生成するので、あなたは**完全な**制御をIDで持っていません。これらはあなたが項目を追加したり削除したりすると変わることがあります。私は@ xainがこれらの入力のために独自のキーを保持するべきであることに同意します。 –

0

実際、getId()はコンポーネントIDの整数値です。これはR生成クラスで説明したのと同じです。

あなたが書いたとおりに実際の名前が必要ですか?参照が必要な場合は、int値で十分です。

+0

あなたの返事をありがとう、前の答えのスレッドをお読みください。 – xain

関連する問題