0

センサーからの動的ボタンに問題があります。
ご覧のとおり、センサーのリストを取得し、それぞれにボタンを割り当てます。次に、何らかの理由で、ループから生成された「1」別名「i」に適合しないため、onClick リスナーを機能させることができません。

私はまったく新しいので、誰かがこの問題を解決する方法を見つけるのを手伝ってくれるかどうか疑問に思っています. はい、私は btnTag.setId("btn" + i) に疲れましたが、それを認めません..

public class MainActivity extends Activity implements SensorEventListener, OnClickListener  {

    TextView myTextView;    
    SensorManager mySensorManager;
    TextView status;
    String btn = "button";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mySensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        myTextView = (TextView) findViewById(R.id.text1);

        List<Sensor> myList = mySensorManager.getSensorList(Sensor.TYPE_ALL);
        LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags);


        for (int i = 1; i < myList.size(); i++) {
                myTextView.append("\n" + myList.get(i).getName());


                Button btnTag = new Button(this);
                btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                btnTag.setText(myList.get(i).getName());
                btnTag.setId(i);
                layout.addView(btnTag);
                ((Button) findViewById(i)).setOnClickListener(this);

            }
         Toast.makeText(MainActivity.this, "done", Toast.LENGTH_SHORT).show();
        }

    @Override
    public void onClick(View v) {
         switch (v.getId()) {
            case R.id.1:
                Toast.makeText(getApplicationContext(), "button1 is working", 3000).show();
                break;
                }
    }
4

1 に答える 1

0

手動で ID を設定しているので、そのまま行うことができます.-

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case 1:
            Toast.makeText(getApplicationContext(), "button1 is working", 3000).show();
        break;
    }
}
于 2013-10-11T19:21:24.560 に答える