照相 相冊 ImageView 圖片消失

頁面上面有 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卻會自動保存值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章