2014-12-22 65 views
1

我寫一個Android應用程序,我的形式接受數據,然後調用Android相機爲通過下面的代碼的圖片上傳:相機API調用破壞父活動

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    fileUri = getOutputMediaFileUri(); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 

    // start the image capture Intent 
    startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);  

呼叫工作得很好,相機圖像成功返回。但問題出現在這之後。

我一直在測試2-3電話,分別是:1。 A116福邦2. 三星Galaxy大 3.小蜜

應用程序運行的Micromax的手機上就好了。

三星手機有一個問題,導致旋轉應用程序崩潰。我找到了一個修補程序,下面添加到清單:

android:configChanges="orientation|keyboardHidden|screenSize"  

但是,小米手機有一個問題。它似乎總是調用「onCreate()」方法,每次相機意圖返回一個圖像。這擾亂了我從用戶接受的以前的表單數據,通過做出不必要的API調用。

我試圖通過下面的代碼重寫及的onSaveInstanceState onRestoreInstanceState:

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

    // save file url in bundle as it will be null on scren orientation 
    // changes 
    outState.putParcelable("file_uri", fileUri); 

} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 

    // get the file url 
    fileUri = savedInstanceState.getParcelable("file_uri"); 
}  

但onRestoreInstanceState永遠不會被調用。 感謝

+0

也使用onActivityResult()方法。 –

+0

我已經用它來獲取相機結果 –

回答

0

這SO Link已經當onRestoreInstanceState方法被調用

對於快速參考的詳細信息,我粘貼此從另一個鏈接

onRestoreInstanceState(或保存的onCreate束)將被解僱時,該活動由於缺乏資源而被系統殺死,並在您回到該活動時重新啓動。所以如果你在前面開始一個新的Activity並回到前一個(你正在嘗試做的事情),那麼活動A可能不會被殺死(剛剛停止)並重新啓動,而無需通過onRestoreInstanceState。

+0

對不起。但這不適合我 –