2014-06-08 65 views
-1

我試圖從庫中加載圖像。
這是onCreate()onCreate和onRestoreInstanceState(Bundle)在startActivityForResult後未調用

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gallery_picture); 

    mThis = this; 
    mImageCache = new TakingPictureActivityCacheMngr(this); 

    initUi(); 

    if (savedInstanceState == null) { 
     openGallery(); 
    } 
} 

這裏是onSaveInstanceState()

@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", mFileUri); 
    if (com.isee.spot.toolkit.Config.IS_DEBUG) { 
     Log.d(TAG, "Instance was saved."); 
    } 
} 

在恢復:(從來沒有所謂的)

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

    // get the file Uri 
    mFileUri = savedInstanceState.getParcelable("file_uri"); 
} 

onCreate()開畫廊後不會被調用, onDestroy()在畫廊打開時被調用,因此它是onSaveInstanceState()

這裏是清單中的活性聲明:

<activity 
    android:name=".GalleryPictureActivity" 
    android:configChanges="orientation|keyboard|keyboardHidden" 
    android:screenOrientation="portrait" > 
</activity> 

我重載onActivityResult()

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    // if the result is loading image from gallery 
    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
    ... 
+0

這是什麼 - 您的自定義圖像採摘類的onCreate?爲什麼不只是使用ACTION_PICKE意圖? –

+0

這只是在ImageView中顯示所選圖像的活動。 – SagiLow

+0

好的...答案中的代碼是否觸發了恢復?我很好奇爲什麼摧毀被稱爲... –

回答

0

我可能無法正確理解這個代碼的情況下,但看起來這是一個自定義圖像採摘課程?你可能知道 - 但也許不是 - 這有建於SDK方法這...見下文:

private void pickImage() { 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, REQUEST_PICK_IMAGE); 
} 

@Override 
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
    switch (requestCode) { 
     case REQUEST_PICK_IMAGE: 
      if (resultCode == Activity.RESULT_OK) { 
       Log.v(TAG, "User Picked An Image"); 
       handleImage(data.getData()); 
      } 
      else if (resultCode == Activity.RESULT_CANCELED) { 
       Log.v(TAG, "User Cancelled Pick Image"); 
      } 
      break; 

     default: 
      super.onActivityResult(requestCode, resultCode, data); 
      break; 
    } 
} 

private void handleImage(final Uri selectedImage) { 
    String filePath = selectedImage.getEncodedPath(); 
    Log.v(TAG, " -- picked image is " + filePath); 
    MyImageView.setImage(selectedImage); 
} 
+0

謝謝,但這是我的代碼,它不工作。 – SagiLow

+0

對不起,現在我明白了... –

1

下面是答案, 活動本身是正確的。
問題是與啓動它的活動,我用:galleryPic.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 顯然這導致onActivityResult(int, int, Intent)不被調用。
離開這只是爲了有人得到同樣的行爲的機會。 謝謝你試圖幫忙,我想你沒有機會。

相關問題