Sean's Note: Android's dialog 選項與 Index 的關係

2012年12月3日 星期一

Android's dialog 選項與 Index 的關係

在建立 Dialog 時,很常見對 Positive/Negative 按鈕,用匿名內層類別 (Anonymous Inner Classes)
的方式各別對其建立 OnClickListener 物件。另外一種寫法是,不管使用者按下哪個選項,
都用同一個 OnClickListener 物件,在依據 int which 參數來判斷是哪個選項。

Positive Button 為 -1
Negative Button 為 -2
Neutral Button 為 -3

Items 則從 0 開始遞增
範例如下:

...

String[] options = {"紅色", "黃色", "綠色" };
builder.setItems(options, listener); // 指定選項
builder.setPositiveButton("確定", listener);
builder.setNegativeButton("取消", listener);
builder.setNeutralButton("設定", listener);

DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener(){
  public void onClick(DialogInterface dialog, int which) {
    // 找到Button元件
    Button btn = (Button) findViewById(R.id.button1);
    // 指定背景色彩
    switch(which){
      case -3:
        // Neutral 選項被按下
        break;
      case -2:
        // Negative 選項被按下
        break;
      case -1:
        // Positive 選項被按下
        break;
      case 0:
        btn.setBackgroundColor(Color.RED);
        break;
      case 1:
        btn.setBackgroundColor(Color.YELLOW);
        break;
      case 2:
        btn.setBackgroundColor(Color.GREEN);
        break;
    }   
  }
};

...


▲ 各選項的 Index 

沒有留言:

張貼留言