5

次の行でいくつかのボタンを追加しました。

for (int i=0; i<XML.size(); i++) {
//add button
ToggleButton b = new ToggleButton(this); 
// Setting the parameters
lefttextv.setLayoutParams(lleft); 
b.setLayoutParams(bright);
//customize button
    b.setOnClickListener(this);
b.setId(id_button);
System.out.println(id_button);
b.setHeight(100);
b.setWidth(200);
// Adding to the RelativeLayout as a child
layouth.addView(lefttextv);
layouth.addView(b);
    id_button++;  
    }

しかし、それらの OnClick() メソッドを取得するにはどうすればよいでしょうか? 私はすでにこのメソッドで View.OnClickListener を実装しています:

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId())
    {
    case id_button: Log.d("Button 0","Button 0 pressed);
        break;
    }
}

しかし、これは機能しません。どうすれば ID を取得できますか?

4

5 に答える 5

7

bonClickメソッドがメインクラスにb.setOnClickListener(this);ある場合は、アクティビティに onClickListener を使用して実装させるだけで、それが得られます。または、ツアー リスナーを設定する通常の方法を実行します。

ID は xml 参照に使用され、オブジェクトが作成され、この ID を使用して参照されます。この場合b、ToggleButton のすべてのプロパティを使用してビューを作成しました。景色です。

代わりに、v.getId()単に使用する場合if(v == b)

于 2012-09-24T12:04:49.800 に答える
6

を使用するだけb.setOnClickListener(this)で、this実装するクラスを参照しますOnClickListener

編集:

ID リソースを使用してボタンを識別できます。詳しくはこちらをご覧ください。これらの ID をプログラムで生成されたビューに割り当てて、switch/case ステートメントで確認できます。

または、@SmartLemonが言ったように、チェックするだけif (v == b)で、IDを気にする必要はありません。

于 2012-09-24T12:00:39.830 に答える
3

アクティビティ クラスに onClickListener を実装すると、このキーワードを使用して現在のオブジェクトを渡し、コンポーネントのクリック リスナーを登録できます。

class MyActivity extends Activity implements OnClickListener{
     private static final int id_button = 0;

     public void onCreate(Bundle b){
        //add button
        ToggleButton b = new ToggleButton(this); 
        // Setting the parameters
        lefttextv.setLayoutParams(lleft); 
        b.setLayoutParams(bright);
        //customize button
        b.setId(id_button);
        System.out.println(id_button);
        b.setHeight(100);
        b.setWidth(200);
        // Adding to the RelativeLayout as a child
        layouth.addView(lefttextv);
        layouth.addView(b);
        b.setOnClickListener(this);
     }

     @Override
     public void onClick(View v) {
        // TODO Auto-generated method stub
       switch (v.getId()){
       case 0: Log.d("Button 0","Button 0 pressed);
            break;
       }
    }
}
于 2012-09-24T12:05:38.970 に答える
3

あなたは正しいように設定idしましたbuttonid_button

onCreate メソッドを追加:

 b1.setOnClickListener(this);    

以下のように onClick メソッドでその ID を使用します。

@Override
 public void onClick(View v) {
    // TODO Auto-generated method stub
    if(v.getId() == R.id.id_button)
    {
    Log.d("Button 0","Button 0 pressed);
        break;
    }
}
于 2012-09-24T12:02:01.847 に答える
1

このように変更..

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    int i= b.getId();
    switch (v.getId())
    {
        case i:
            Log.d("Button 0","Button 0 pressed");
            break;
    }
}
于 2012-09-24T12:05:40.837 に答える