「Android誌」 Button事件處理、設定監聽事件

在我們寫AndroidApp時、Button一定會常常用到、現在讓我們來試試Button的監聽事件、已下有幾個方法可以達到監聽、記住Android規定只要有設監聽(setOnClickListener)、就必需一定要有點擊事件(onClick)。

方法一、直接將Button設為監聽事件
public class MainActivity extends AppCompatActivity{
    //宣告一個TextView名為txv
    TextView txv;
    //宣告Button
    Button btn1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //設定目前的View為activity_main
        setContentView(R.layout.activity_main);
        txv = (TextView) findViewById(R.id.textView);
        //設定Button
        btn1 = (Button) findViewById(R.id.btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txv.setText("1");
            }
        });
    }
}
但如果你同時有非常多Button都必需設監聽、那不就每個Button都必需設監聽然後在設定點擊事件(onClick)、假如你這樣做那麼在後面程式上的修改及閱讀上都會非常困難、解決的方法可以將整個class都設為同一點擊事件、在利用switch來選擇Button的id

方法二、將整個class設為同一事件
public class MainActivity extends AppCompatActivity {
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    //宣告一個TextView名為txv
    TextView txv;
    //宣告多個Button
    Button btn1, btn2, btn3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //設定目前的View為activity_main
        setContentView(R.layout.activity_main);
        txv = (TextView)findViewById(R.id.textView);
        //設定Button
        btn1 = (Button)findViewById(R.id.btn1);
        btn2 = (Button)findViewById(R.id.btn2);
        btn3 = (Button)findViewById(R.id.btn3);
        //還是必需每個Button都設監聽
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
    }
    //利用swtich來選擇點擊事件
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn1:
                txv.setText("1");
                break;
            case R.id.btn2:
                txv.setText("2");
                break;
            case R.id.btn3:
                txv.setText("3");
        }
    }
}

留言