null값을 받을 수 없는데 null 값이 들어왔기 때문에 발생한 에러.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
        @SuppressWarnings("deprecation")
        write_web_view.webViewClient = object : WebViewClient() {
            @SuppressWarnings("deprecation")
            override fun onPageStarted(view: WebView, url: String, favicon: Bitmap) {
                if (url.contains("toapp")) {
                }
            }
 
            override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {
 
                if (url.contains("toapp")) {
                    //       didOccureContentDetail(url)
                } else {
                    webView.loadUrl(url)
                }
                return true
            }
 
            @TargetApi(Build.VERSION_CODES.N)
            override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
 
                if (request!!.url.toString().contains("toapp")) {
                    didOccureContentDetail(request.url.toString())
                } else {
                    write_web_view.loadUrl(request.url.toString())
                }
                return true
            }
        }
cs

 

Nullable로 수정해서 구현 완료.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        @SuppressWarnings("deprecation")
        write_web_view.webViewClient = object : WebViewClient() {
            @SuppressWarnings("deprecation")
            override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
                if (url!!.contains("toapp")) {
                }
            }
 
            override fun shouldOverrideUrlLoading(webView: WebView?, url: String?): Boolean {
 
                if (url!!.contains("toapp")) {
                    //       didOccureContentDetail(url)
                } else {
                    webView!!.loadUrl(url)
                }
                return true
            }
 
            @TargetApi(Build.VERSION_CODES.N)
            override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
 
                if (request!!.url.toString().contains("toapp")) {
                    didOccureContentDetail(request.url.toString())
                } else {
                    write_web_view.loadUrl(request.url.toString())
                }
                return true
            }
        }
cs

 

xzing 라이브러리를 이용한 QR코드 구현중 발생한 에러.

error 내용

1
2
3
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=49374, result=0, data=null} to activity 
{com.example.qrcodetest/com.example.qrcodetest.ActivityMain}: java.lang.IllegalArgumentException: 
Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter intent

 

1
2
3
4
5
6
    override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent) {
        if (resultCode == Activity.RESULT_OK) {
            val scanResult:IntentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent)
           // some code
        }
    }
cs
cs

뒤로가기 버튼을 눌렀을 때 this.finish() 를 호출하여 현재 액티비티를 종료하게 만들었는데

맨 처음 activity-> activity 구현시엔 아무런 오류가 없었던 게

activity->view로 바꾸니 갑자기 RuntimeException, IllegalArgumentException를 보냈다.

해당 액티비티가 종료되면 onActivityResult 메소드가 무조건 호출되는 방식인데

QR코드를 찍지 않고 뒤로가기를 눌러 종료하였을 때 data가 null값인게 문제가 되었던것이다.

그래서 데이터를 받아오는 intent 변수에 nullable 기호인 ?를 붙여줬더니 정상작동 하였다.

(왜 activity->activity 였을땐 아무런 문제가 없었는지는 모름 ㅠ)

1
2
3
4
5
6
7
  override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
        if (resultCode == Activity.RESULT_OK) {
            val scanResult:IntentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent)
            //some code
            }
        }
    }
cs

+ Recent posts