Android_5_學習《第一行代碼》的使用攝像頭和相冊無法顯示圖片問題解決
解決方法參照網上教程:
學習《第一行代碼》的使用攝像頭和相冊無法顯示圖片總結
在《第一行代碼》的8.3小節調用攝像頭和相冊時,發現書上把代碼敲完後,可以調用攝像頭拍照,
勾選確認後回到APP頁面時,並沒有顯示圖片,選擇相冊圖片也是一樣,可以打開相冊,
選中相片返回後也是無法在APP上顯示,解決過程如下:
書上原代碼:(粘貼自網上)
只說顯示的問題吧,註意到進入顯示有:
這麽一個限定條件,而RESULT_OK = -1 ,那麽requestCode是多少呢?前面是switch(requestCode) --> 然後是case TAKE_PHOTO: 而TAKE_PHOTO=1;
結果邏輯就變成這樣,當requestCode = TAKE_PHOTO = 1時,進入到case裏面,進入case之後, requestCode = 1 != RESULT_OK = -1 所以,
進入不了顯示圖片的程序裏,自然也就無法顯示圖片了。
同理,選中相冊中的相片也是一樣,case CHOOSE_PHOTO: 這裏CHOOSE_PHOTO = 2; 也不等於 -1 ,所以也無法顯示相片。
解決過程:
一開始將case TAKE_PHOTO中的 if ( resultCode == RESULT_OK )
改為 if ( resultCode == RESULT_FIRST_USER) 結果拍照可以顯示圖片,
但是在case CHOOSE_PHOTO: 中也這樣改選圖片之後還是不行,
仔細看一下發現RESULT_FIRST_USER = 1;
與TAKE_PHOTO值一樣,因此,第一個case可以跑進那個if 裏面,第二個不行。
接下來,直接把第二的case中的 if( result == RESULT_OK ) 改為 if ( result == 2 ),
結果選擇相片也是可以正常顯示了。
到這裏問題解決了。
解決完之後正確代碼:
該作者還做了個嘗試,因為如程序所示,通過switch( resultCode )已經有關於返回結果的刪選,
這個if ( resultCode == RESULT_OK )
Android_5_學習《第一行代碼》的使用攝像頭和相冊無法顯示圖片問題解決