2017-10-12 47 views
0

當我從另一個活動返回到主活動並在返回Intent中放置一個額外的位圖時,該應用程序完全完成,並且主活動中的onActivityResult根本不會被調用。將位圖作爲額外的結果Intent完全關閉應用程序

SecondaryActivity.java

private void returnFromModule(int result) { 
    Intent intent = new Intent(); 
    intent.putExtra(CameraModule.Keys.KEY_FILE_PATH, mFilepath); 
    //if the next line is omitted the app goes back normally to the main activity 
    intent.putExtra("data", mThumbnail); 
    setResult(result, intent); 
    finish(); 
} 

注意,一切正常,當我不把多餘的位圖。位圖也不是很大。

public static Bitmap getThumbnail(String filepath) { 
    ExifInterface exifInterface = getExifInterface(filepath); 
    byte[] thumbnailData = exifInterface.getThumbnail(); 
    Bitmap thumbnail = BitmapFactory.decodeByteArray(thumbnailData, 0, thumbnailData.length); 
    return thumbnail; 
} 

這是放在意圖中的縮略圖位圖。

MainActivity.java

這裏是我的MainActivity的onActivityResult,但我不認爲它很重要,因爲很多時候一個位圖被放在迴歸意向那就不叫的。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == Activity.RESULT_OK) { 
      ((TextView)findViewById(R.id.path)).setText(data.getExtras().getString(CameraModule.Keys.KEY_FILE_PATH)); 
    } 
} 

}

這裏是我開始SecondaryActivity

startActivityForResult(new Intent(this, SecondaryActivity.class),1); 
+0

您是否從MainActivity啓動了SecondardActivity?如果你這樣做,你是否通過使用startActivityForResult()將意圖返回給MainActivity來啓動SecondardActivity?如果你不這樣做,你必須在創建類似下面的答案時設置類信息。 – kimkevin

+0

是的,我開始了結果的活動。只有當我添加一個位圖額外,它才能完成應用程序,否則它會正常返回。 – ninjaintrouble

+0

返回一個位圖是一個非常糟糕的主意。而且它不起作用,因爲你可以看到。更好地返回文件路徑並讓接收器提取位圖。 – greenapps

回答

0

有大小限制了可以穿越活動的內容。你不能這樣做。

+0

我正在運行這與Android 6,不應該引發TransactionTooLargeException?位圖也只是一個縮略圖,應該通過,因爲位圖實現了Parcelable。 – ninjaintrouble

+0

請告訴我們您試圖放入該意圖的字節數量。 – greenapps

+0

位圖是0.786 Mb – ninjaintrouble

相關問題