2017-05-27 40 views
0

我試圖讓用戶從他們的畫廊選擇一個圖像來替換我的活動(這是基於DB值編程添加)現有的。下面是這是造成一些問題上我的代碼部分:Android - getIntExtra結果默認值在onActivityResult

public void requestImage(int imageID){ 
    Intent intent = new Intent(); 
    intent.putExtra("imageID",imageID); 
    intent.setType("image/*"); 
    Log.v("requestImage",Integer.toString(intent.getIntExtra("imageID",0))); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 
     Uri uri = data.getData(); 

     try { 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
      int imageID = data.getIntExtra("imageID",0); 
      Log.v("onactivityresult",Integer.toString(imageID)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

的目標是讓被選定爲這個功能,我路過這對requestImage,通過對onActivityResult的圖像的ID。 onActivityResult包含用於根據用戶選擇的圖像設置圖像位圖的代碼(爲簡明起見,從代碼示例中省略)。

注意兩個記錄語句,這導致:

05-27 15:51:31.756 7769-7769/com.praytoday.app.praytoday V/requestImage: 12 

05-27 15:45:55.511 2037-2037/com.praytoday.app.praytoday V/onactivityresult: 0 

如您在日誌報表注意到,第一個日誌實際上是讓從意圖本身整型,所以我敢肯定它是被正確設置(並且這裏沒有任何類型問題)。

在我看來,數據不應該是一樣的意圖(請原諒我缺乏對意圖主題的認識 - 這對我來說很新穎)。

的事情,我曾嘗試:

  • 使用getIntent(),而不是數據
  • 不使用createChooser,而是隻使用普通的意圖
  • 看着這個我的每一個問題/答案可以找到

任何幫助確定爲什麼這個額外的價值不在數據參數將非常感激!提前致謝。

+0

如果我沒有記錯,傳遞的意圖不是你傳遞的意圖 - 意味着該意圖中的任何參數都不會返回。但我可能是錯的 – Zoe

+0

這真的好像會擊敗目的!似乎必須有可能通過某種方式傳遞一個論點 - 我真的認爲這是方式,但我想也許它不是。 – 3nails4you

+0

雖然我很久沒有使用startActivityForResult,但不要把它當作答案。由於框架中的錯誤,可能會有一些重置它。 – Zoe

回答

0

我繼續前進,只是設置一個全局變量來存儲當前設置的替換圖像。 requestImage將其設置爲當前圖像ID,然後onActivityResult使用該變量。不是很優雅,但它的作品!