頁面上面有 2個 ImageView,點擊後調用相機拍照或從相冊中選擇2張圖片顯示。
功能很簡單,網上也有例子。
選擇相片:
Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, rcode);
使用相機:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File( "tt.jpg" );
Uri uri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, rcode);
這個時候問題來了,當你調用系統相冊或相機拍照時會發現,之前的ImageView中的圖片會消失。
也就是說,設置第一個ImageView圖片會正常顯示,設置第二個時第一個的ImageView就會消失(有時不會消失)。
這個現象一般都是選擇大圖時出現,所以我以爲是因爲圖片太大造成內存問題什麼的。
但是又沒出現溢出的異常,我使用的是 android studio,連調試的斷點消息竟然也會丟失,讓人摸不清頭腦。
一次偶然的機會,在調試時發現保存圖片路徑的變量在調用一個activity後變成了null。
查看了activity生命週期才恍然大悟,原來是因爲activity被殺死了,activity中的變量也就爲null了。
ImageView 自然也就失去了圖片的信息了。
知道了問題的原因,解決辦法也就簡單了。
實現 onSaveInstanceState 方法,保存數據,再在onCreate方法中重新設置變量。
還有一點很奇怪,頁面上的EditText卻會自動保存值。