0
我創建了一個活動,允許用戶將圖片添加到該活動中的ImageView中。我創建了一個按鈕,爲該活動打開一個上下文菜單,並且爲用戶提供了從圖庫中選取圖片或使用相機拍攝圖片的選項。
如果我選擇第一個選項 - 從圖庫中選擇一張圖片,它可以正常工作。畫廊已打開,我選擇了圖片,我的活動恢復並且圖片被添加到ImageView。
Android - 相機活動被打開而不是圖片庫
- 如果我再次打開上下文菜單,並嘗試打開圖庫,相機 活動被打開:選擇第二個選項,在拍照,恢復到我的活動後
奇怪的事情開始發生而不是 - 我「完成操作需使用」對話框顯示
- 我開畫廊關閉相機活動,並恢復到我的活動,挑選一張照片,並拋出NullPointerException異常
爲什麼我有這種行爲和異常?我試過尋找類似的主題,但還沒有找到解決方案。
下面是我的活動
public boolean onContextItemSelected(MenuItem item) {
super.onContextItemSelected(item);
switch(item.getItemId()) {
case R.id.cm_Select_picture: {
// TODO open gallery
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, ""), RC_SELECT_PICTURE);
}
case R.id.cm_Take_picture: {
// TODO open camera
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, RC_TAKE_PICTURE);
}
default: return false;
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
switch(requestCode) {
case RC_SELECT_PICTURE: {
Log.d(TAG, "Case select picture");
Uri selectedImageUri = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImageUri
, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Bitmap pic = BitmapFactory.decodeFile(filePath);
goodsImage.setImageBitmap(pic);
}
case RC_TAKE_PICTURE: {
Log.d(TAG, "Case take picture");
if(data.getExtras().get("data") != null) {
Bitmap pic = (Bitmap) data.getExtras().get("data");
goodsImage.setImageBitmap(pic);
}
}
}
}
}
04-26 01:34:59.529: E/AndroidRuntime(20531): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3, result=-1, data=Intent { dat=content://media/external/images/media/9 }} to activity {com.forestassistant/com.statistics.GoodsActivity}: java.lang.NullPointerException
我剛剛意識到,我忘了在每種情況下添加一箇中斷語句......它現在按預期工作。無論如何,謝謝你的回答! – droid8421 2012-04-26 09:07:26