2017-10-04 89 views
1

這裏下面的示例代碼的意圖:未能從相機上的活動結果提供結果

val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) 
    startActivityForResult(intent, REQUEST_CAMERA) 

注:當我按回到相機從作爲活動結果顯示這樣的結果:

的java.lang .RuntimeException:未能將結果ResultInfo {who = null,request = 65537,result = 0,data = null}傳遞給活動 並引發java.lang.IllegalArgumentException:指定爲非null的參數爲null:

嘗試出來的解決方案是這樣的:

try { 
       when(requestCode){ 
        Activity.RESULT_CANCELED -> { 
         System.out.println("nothing") 
        } 
        Activity.RESULT_OK -> { 
         if (requestCode == SELECT_FILE) 
          onSelectFromGalleryResult(data) 
         else if (requestCode == REQUEST_CAMERA) 
          onCaptureImageResult(data) 
        } 
       } 
      }catch (e:NullPointerException){ 
       e.printStackTrace() 
      } 

仍不能解決問題,因爲當我做調試運行記錄它不出來的FUNC onactivityresult如果我去按去從相機背部,而不是拍攝圖像。從畫廊拍攝照片和皮卡圖像的魅力。

謝謝。請幫助我解決這個問題,因爲一路解決方案不工作。它似乎像谷歌必須重寫結果代碼!!(結果代碼!!:INT)樂趣< - 這應該有返回非空。

+0

檢查: https://github.com/firebase/FirebaseUI-Android/issues/ 782#issuecomment-312507748 – pRaNaY

+0

public void onActivityResult(int requestCode,int resultCode,Intent data)這是我從父代片段派生的。那麼如何在kotlin中做到這一點? –

回答

9

你不應該重寫這個嗎?

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 
     super.onActivityResult(requestCode, resultCode, data) 
    } 
+0

在擴展片段沒有必要把這樣超級 重寫fun onActivityResult(){//不需要超級} 如果我也把同樣的崩潰。看來,最新的Android版本26.0.2 –

+1

中存在錯誤,感謝像魅力 –

8

我得到了同樣的問題,同時使用科特林實現我的應用程序的貝寶支付網關。你只需要添加與意圖在onActivityResult作爲數據可以爲空如果數據爲空或任何錯誤。因此,我們需要在onActivityResult

定義數據爲可爲空就在下面代替您SomeActivity的onActivityResult簽名:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) 
+0

yup。新轉換器kotlin出現問題。 –