2011-01-17 8 views
1

通常、私は私の意見のonClickを/ケースを切り替えるときには、XMLで定義されていたので、私は問題はないと私は使用してIDを持っているとの表示上のスイッチ/ケース:アンドロイド、プログラムによって生成されたビュー

switch(v.getID()) 
{ 
case(R.id.someButton): 
{ 
    // do something 
} 
default: // bla 
} 

しかし、私は現在、ビューをプログラム的に定義しているので、静的なIDは持っていません。

これらのビューをどのように切り替える必要がありますか?ビューでgetID()を試した場合、静的ではないため許可されていません。

アイデア?ありがとう。

答えて

6

編集: ids.xmlファイルを作成し、プログラムでビューを作成する際にコード内で参照する必要があります。

+1

なぜ誰もがこのユースケースに対処することを唯一の目的とするids.xmlをすでに持っている場合、strings.xmlを乱用したいのですが、 –

+0

@Kalinga答えが更新されました。ありがとう。 – Vivek

0

次に、switch文を使用しないでください(IMO、IMOだけです)。あなたがプログラムでビューを生成しているのであれば、あまりにもプログラムでクリックリスナーを設定します。あなたはあなたのビューを作成するとき

Button button = new Button(this); 
button.setOnClickListener(new OnClickListener(){ 
    public void onClick(View v){ 
     // execute specific behavior 
    } 
}); 
+0

私はこれを避けることを望んでいました。私は同じ方法を呼びたい20のビューを持っています。より簡単なソリューションはありますか?私はv.doStuff()を試しましたが、 "doStuff"は特定の(カスタム)Viewに対してのみ認識されます。 – Hamid

+0

もっと良い方法を考えることができるかどうかを確認するためにコードを貼り付けてください。 – Cristian

+0

実際には、13個のボタンをインスタンス化する必要はなく、そのうちの1つを押すと何かをする必要があります。各ボタンは同じメソッドを呼び出しますが、パラメータは異なります。各ボタンの新しいonClickを作成するのではなく、ちょっと整理する方法を探しています。 – Hamid

1

あなたはView.setId()を行うことができます。

関連する問題