2012-09-17 78 views
0

這是我從未想到的第一個奇怪結果。這可能是該領域缺乏技能。startActivity調用第一個在startActivityForResult之後調用的調用

嗯,我有一個按鈕,通過它我需要從手機庫(可能來自SD卡)選擇一個圖像。我用隱含的意圖調用手機圖庫,並獲得了與startActivityForResult()絕對圖像路徑。立即打電話給另一項活動,將該路徑與startActivity()

根據我的情況,我在按鈕的onClick()中編寫了以下代碼。

當我點擊按鈕,startActivity(next)首先被調用,然後startActivityForResult(intent,1)被調用。當我試圖通過捆綁對象獲取第二個活動中的圖像路徑時,我得到NullPointerException,因爲startActivity(next)被首先調用。

當我看到我的調試點不符合預期時,我放下了下頜。希望我得到這個問題的確切原因。

感謝
Aswin

回答

0

怎麼樣獲取路徑

protected void upLoadPhoto() { 

Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); 
intent.setType("image/*"); 
intent.putExtra("return-data", true); 
System.out.println("select image"); 
startActivityForResult(intent, 1); 

finish(); 

}

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode == 1 && data != null && data.getData() != null){ 
      Uri uri = data.getData(); 
      if (uri != null) { 
       Cursor cursor = getContentResolver().query(uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null); 
       cursor.moveToFirst(); 
       final String imageFilePath = cursor.getString(0); 
       System.out.println("Background : "+imageFilePath); 
       next.putExtra("backImagePath", imageFilePath); 
       cursor.close(); 

      startActivity(next); 

     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 
後調用 startActivity(next);遷入 onActivityResult() ......這樣你就導航到其他活動

}

+0

它的工作就像一個魅力。謝謝親愛的努努。但我應該得到問題的原因。你能解釋一下嗎? – Aswin

+0

問題是調用結果的活動需要一些時間,並且在startActivityForResult之後立即調用start活動時,系統必須在完成onActivityResult處理之前轉到下一個活動(如打開2個線程比另一個短) – Nermeen

+0

謝謝Nunu爲有幫助。 – Aswin

0

刪除startActivity(next)從功能,把它放在你onActivityResult檢索您的數據

0

你有當從畫廊成功的選擇你的圖像調用startActivity()onActivityResult()後。因爲當startActivityForResult()它將要進入圖庫以拾取圖像,並且在此之前startActivity()被觸發並且您將移動到下一個活動。

0

刪除startActivity從功能(下一步),並把它放在onActivityResult後得到1加你的下一個意圖

相關問題