由于将每个按钮的OnClickListener设置为this类,因此需要实现一个onClick方法进行响应。为了判断单击了哪一个按钮,可以将传入的View对象与每个Button对象进行比较。如果它们相等,那么这就是单击的按钮。、可以设置一个变量which对应先前定义的常量值,以此来跟踪按下哪个按钮。然后,将这个变量传递给正由ACTION_PICK意图实例化的Gallery应用程序。如同之前的示例所显示的那样,这将以允许用户选择一幅图像的模式启动该应用程序。
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);
}
在用户选择一幅图像之后,将调用onActivityResult方法。通过startActivityForResult方法传入的变量将在第一个参数(称之为requestCode)中回传给我们。利用它就可以知道用户刚刚选择了哪幅图像:第一幅或第二幅。可以通过这个值来决定使用哪一个位图对象加载所选择的图像。
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;
}