부제는 

Fragment 에서 호출한 startActivityForResult 의 결과값이 Fragment 의 onActivityResult 로 안 와요 ㅠㅠ 


오늘도 질문 받아주다가 새로운 지식을 얻었다.



일단, 이전 버전의 fragment 는 잘 모르겠고

andorid.support.v4.app.Fragment 를 이용했다면 분명, Fragment에서도 startActivityForResult가 잘 동작해야 한다.


그런데 이게 fragment 내에 정의된 onActivityResult로 안 온다?! 옴마나?!


싶을 때는 해당 fragment의 상위 activity 코드를 열어보자.


만약, Activity에 onActivityResult method가 override 되어있다면 (사실 만약이 아니고 무조건 그럴 거임)

해당 onActivityResult 코드에 super.onActivityResult 가 빠져있는지 확인해보자. (아마 빠져있을 거임 ㅎㅎ)



알아보니 startActivityResult의 결과는,

먼저 Activity 의 onActivityResult 를 거쳐서 fragment 의 onActivityResult 로 넘어오는 것 같다. (노확실 영어못함)

그리고 그 fragment로 넘겨주는 부분이 Activity 의 onActivityResult 에 정의되어 있는 듯.


그러니 fragment 의 상위 activity 가 onActivityResult를 아예 override 하고 있지 않거나, super.onActivityResult 를 제대로 호출해주고 있다면

fragment 까지 잘 넘어가겟지만,

그렇지 않다면 아예 fragment 의 onActivityResult로 넘어갈 기회조차 잃는 것..



method override 하면서 super.~ 를 지울 때에는 막 지우지말고 역할이 뭔지 판단 후에 지우는 습관을 들이는 것이 좋을 것 같다.


는 나도 잘 못하지만 ㅎㅎㅎ

Error:Execution failed for task ':app:mergeDebugResources'. > Error: Some file crunching failed, see logs for details

라는 에러가 떴다.


see logs for details 라길래 확인해봤더니

어쩌구저쩌구내나인패치경로~~ 9.png malformed. 라고 나와있었다.


구글링을 해봤더니

YOUR_SDK_PATH/tools/draw9patch 라는 실행파일을 실행해서

저 프로그램으로 해당 나인패치 파일을 열었다가 다시 저장하면 된단다.


잘됨..


이딴 오류는 왜 있는 거야 대체 

후배가 도와달라고.. colorpicker 라이브러리 추가하다가 에러가 떴는데 왜인지 모르겠다고 해서 봤다.


아 Failed to resolve 어쩌구~ 뜨면 젤 머리아프다.


이번엔 또 어떤 땡깡을 부리나 싶어서 봤는데

내 최근 플젝 SDK version이 25.~ 였어서 아마 접할 일 없었던 에러인 것 같다.


Setting up Gradle for api 26 (Android)


요기서 도움을 많이 받았는데

요약하면 (영어 못함 해석 틀렸을 가능성 ++++++++)


26.0.0 버전부터는 support libarary 에 google 의 maven storage가 적용되어서,

일일이 support tool? 들을 설치해주지 않아도 가져다 쓸 수 있다고 한다.


그 google maven storage 를 어찌 적용하나 하면


project build.gradle (top level build.gradle file) 에서 


allprojects {

repositories {

jcenter()

}

}

라는 부분이 있는데!!


이 부분을 고쳐주면 된다. 고친다기보다 코드 추가!


gradle version 3부터는 google() 이란 게 추가되어서


#1. gradle version >= 3

allprojects {

repositories {

jcenter()

google()

}

}

이렇게만 해주면 되고



gradle version 3 미만인 경우


#2. gradle version < 3

allprojects {

repositories {

jcenter()

maven { url "https://maven.google.com" }

}

}

이렇게 해주면 됨!!





주의할 점은..


절대,, jcenter() 위에 maven 블럭을 쓰지 말라는 거..


쓴다고 바로 빨간줄이 뜬다거나 하면 차라리 나을텐데

그냥 효력이 없는 것 같다.


나랑 내 후배는 저 maven 태그도 잘 써져있고 google maven repository 주소도 잘 적어뒀는데 왜 계속 같은 에러가 나지?! 했었는데

jcenter() 가 맨 밑에 있었다..

올려주니 넘나 잘 됨 흑흑




역시 삽질하며 배우는 거죠


근데 왜 colorpicker 라이브러리를 추가하기 전에는 잘 됏던 걸까?

maven block 이 효과없었던 건 라이브러리 추가 전이나 추가 후나 매한가지일텐데 왜지..


미스테리다. 알아봐야 알 수 있겠지만 이거 검색하고 있기엔 할 일이 넘나 많은 것~

+ Recent posts