2016-07-30 55 views
1

我試圖創造一些按鈕(數字按鈕{0,1,...,9}) 了我這樣做的方式,是這樣的:如何創建按鈕以幾乎相同的工作

button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(getNumber.getText().toString().length()>=2) 
       return; 
      getNumber.setText(getNumber.getText().toString() + "1"); 
     } 
    }); 

    button2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(getNumber.getText().toString().length()>=2) 
       return; 
      getNumber.setText(getNumber.getText().toString() + "2"); 
     } 
    }); 

    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(getNumber.getText().toString().length()>=2) 
       return; 
      getNumber.setText(getNumber.getText().toString() + "3"); 
     } 
    }); 

    and so on ... 

有沒有更好的方法來做到這一點,並防止寫同樣的東西?

+0

檢查此主題http://stackoverflow.com/questions/31891481/using-a-loop-to-set-the-buttons-onclicklistener –

回答

2

你可以有以下方法:

private void setupButton(int btnId, int num) { 
    Button btn = (Button) findViewById(btnId) 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(getNumber.getText().toString().length() >= num) 
       return; 
      getNumber.setText(getNumber.getText().toString() + num); 
     } 
    }); 
} 

我們通過按鈕的資源ID和相應數量的這種方法爲每個按鈕。

3

您可以通過做使你的代碼更加清晰:

button1.setOnClickListener(this); 
button2.setOnClickListener(this); 
button3.setOnClickListener(this); 
button4.setOnClickListener(this); 
button5.setOnClickListener(this); 
//.. 

現在:

@Override 
public void onClick(View v) { 
    switch(v.getId()) { 
    { 
     case button1: 
      doSomeTask(getNumber.getText().toString(), "1"); 
      break; 
     case button2: 
      doSomeTask(getNumber.getText().toString(), "2"); 
      break; 
     //... 
    } 
} 

現在doSomeTask()

private void doSomeTask(String text, String num) { 
    if(text.length()>=2) 
     return; 
    getNumber.setText(text + num); 
} 
1

組標籤像button1.Tag = 1;button2.Tag = 2;等每一個按鈕。如果在每個按鈕的佈局android:tag="1"

從@oneStepBack

button1.setOnClickListener(this); 
button2.setOnClickListener(this); 
button3.setOnClickListener(this); 
button4.setOnClickListener(this); 
button5.setOnClickListener(this); 
//.. 

活動代碼:

@Override 
public void onClick(View v) 
{ 
    doSomeTask(getNumber.getText().toString(), v.getTag()); 
} 

doSomeTask從oneStepBack

private void doSomeTask(String text, String num) { 
    if(text.length()>=2) 
     return; 
    getNumber.setText(text + num); 
} 

這是我遵循多個按鈕的Wi實踐同樣的功能!