由于將每個(gè)按鈕的OnClickListener設(shè)置為this類,因此需要實(shí)現(xiàn)一個(gè)onClick方法進(jìn)行響應(yīng)。為了判斷單擊了哪一個(gè)按鈕,可以將傳入的View對(duì)象與每個(gè)Button對(duì)象進(jìn)行比較。如果它們相等,那么這就是單擊的按鈕。、可以設(shè)置一個(gè)變量which對(duì)應(yīng)先前定義的常量值,以此來(lái)跟蹤按下哪個(gè)按鈕。然后,將這個(gè)變量傳遞給正由ACTION_PICK意圖實(shí)例化的Gallery應(yīng)用程序。如同之前的示例所顯示的那樣,這將以允許用戶選擇一幅圖像的模式啟動(dòng)該應(yīng)用程序。
public void onClick(View v) {
int which = -1;
if (v == choosePicture1){
which = PICKED_ONE;
}
else if (v == choosePicture2){
which = PICKED_TWO;
}
Intent choosePictureIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);、startActivityForResult(choosePictureIntent, which);
}
在用戶選擇一幅圖像之后,將調(diào)用onActivityResult方法。通過(guò)startActivityForResult方法傳入的變量將在第一個(gè)參數(shù)(稱之為requestCode)中回傳給我們。利用它就可以知道用戶剛剛選擇了哪幅圖像:第一幅或第二幅。可以通過(guò)這個(gè)值來(lái)決定使用哪一個(gè)位圖對(duì)象加載所選擇的圖像。
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) { super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK){
Uri imageFileUri = intent.getData();
if (requestCode == PICKED_ONE){
bmp1 = loadBitmap(imageFileUri);
onePicked = true;
}
else if (requestCode == PICKED_TWO){
bmp2 = loadBitmap(imageFileUri);
twoPicked = true;
}