2012-02-13 15 views
2

私はEclipseでAndroid電卓をプログラミングしています。私は、それぞれのリスナーをコーディングするのではなく、いくつかの変数のOnClickListenerを設定できるようにしたいと思います。過度の殺人のようだ。配列を使ってこれを行う方法はありますか?多くの助けをいただければ幸いです。Android Calculatorプログラムのいくつかの変数にonClickListenerを簡単に設定する必要があります

パッケージrechee.cool;その後、

​​

とあなたの活動にあなたがその属性で使用されるメソッドを追加します。

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class HelloAndroidActivity extends Activity { 
    /** Called when the activity is first created. */ 

    int counter=0; 
    //Just have two buttons so far, I'm going to have like 10 more 
    Button one; 
    Button two; 

    EditText display; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     // Associate the button variable with the xml reference 
     one= (Button) findViewById(R.id.bOne); 

     display= (EditText) findViewById(R.id.editText1); 

     //When button is clicked, display the text. How do I do this for the rest of my variables? 
     one.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 

       //String string= Integer.toString(counter); 
       display.setText("1"); 
      } 
     }); 

    } 
} 

答えて

2

私は、これは、このように、すべてのボタンにXMLで同じonClick属性を追加しているんだろうな方法、idでボタンを分化:

public void onButtonClick(View v) { 

    switch(v.getId()) { 

     case R.id.button1: 
      // do something when button 1 is pressed 
      break; 

     case R.id.button2: 
      // do something when button 2 is pressed 
      break; 

     // and so on .... 
    } 
} 

代わりに使用すると、各ボタンを取得し、すべてのボタンに同じリスナーを割り当てることfindViewById()を使用することができます。上記のようにonClick()のIDで識別します。これはいくつかの役に立たないコードラインを追加するので、私はここのこの例は少しきれいだと思います。

+0

だから私は今までonclicklistenerをどのように設定するのですか?以前は "one.setOnc – recheej

+0

だったので、今はOnClickListenerを何に設定するのですか?それがone.setOnだった前に...今何を設定していますか? – recheej

+0

これ以上気にする必要はありません。 。 どうもありがとう。 – recheej

0

はいあなただけの活動ののonClickメソッドをオーバーライドし、OnClickListenerを実装することを指示する必要があります:

import com.ewe.R; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.TextView; 

    public class HelloAndroidActivity extends Activity implements OnClickListener { 
     /** Called when the activity is first created. */ 

     int counter=0; 
     //Just have two buttons so far, I'm going to have like 10 more 
     Button one; 
     Button two; 

     EditText display; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      // Associate the button variable with the xml reference 
      one= (Button) findViewById(R.id.bOne); 

      display= (EditText) findViewById(R.id.editText1); 

      //When button is clicked, display the text. How do I do this for the rest of my variables? 
      one.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View v) { 

        //String string= Integer.toString(counter); 
        display.setText("1"); 
       } 
      }); 

     } 

     @Override 
     public void onClick(View v){ 
      switch (case v.getId()){ 
      case R.id.bOne: 
       //Put code for bOne here 
       break; 
      case R.id.editText1: 
        //Put code for editText1 here 
        break; 
      } 
     } 
    } 
関連する問題