밑의 블로그를 참조해주세요.

 

swalloow.tistory.com/87

 

인터넷의 예제들을 보면 http 통신을 하지 않고 안드로이드 폴더 내에 xml를 넣고 파싱하는 것들이 많다. 

그것을 따라서 xmlpullparser을 사용하게 되면 안드로이드 메인 ui 스레드에서는 네트워크 통신이 되지 않는 다는 에러를 뿜게 된다.

 

이것을 해결하기 위해서는 asynctask를 사용하면 된다. 그런데 asynctask가 곧 deprecate 된다는 얘기가 있어서.. 다른 방법을 조만간 찾아야될지도 모른다. 하지만 현재 시점에서 되는 방법은 아래 블로그에 있다.

https://g-y-e-o-m.tistory.com/142

 

[Android] XML Parsing, URL로부터 XML 파싱하기(RSS 데이터)

[개요] 날씨를 알려주는 앱, 공공기관에서 준 데이터를 바탕으로 정보를 알려주는 앱들은 각 기상청, 공공기관에서 제공하는 데이터를 받아서 그것을 업데이트 하며 사용자에게 UI를 예쁘게 입��

g-y-e-o-m.tistory.com

 

1. AndroidManifest.xml 파일의 <application> 부분에 android:usesCleartextTraffic="true" 로 설정 => 안드로이드가 https가 아닌 http 통신을 할 때 이 설정을 해주지 않으면 동작하지 않는다고 합니다.

 

2. 서버에서 보내주는 Json 의 데이터 형식과  모델 부분의 어노테이션과 다를 때 => pojo 사용하면 그럴일이 없습니다.

 

3. Result 객체를 사용할 때 주의점 => 서버에서 보내주는 결과값이 Result 로 나오는 경우가 많은데 이 경우에 실수로 안드로이드에서 코딩시 내부에 있는 Result로 잘못 임포트하여 사용하는 경우.. 실행이 되지 않습니다.  이름이 같다고 같은 클래스는 아니다라는 것을 명심하도록 합니다.

 

 

https://blusky10.tistory.com/m/343

 

로컬에 있는 프로젝트를 Github로 올리기

명령어 절차를 매번 찾기 귀찮아서 이렇게 기록 놓기로 했다. 1. 먼저 Github에 새로운 Repository 하나를 생성한다. 2. 실제 repository에 올리고 싶은 프로젝트의 로컬 디렉토리로 이동해서 git init 명�

blusky10.tistory.com

https://www.hahwul.com/2016/02/coding-git-push-push-error-failed-to.html

 

[CODING] GIT에서 강제로 Push 하기 / push 에러 해결하기 ( error: failed to push some refs to )

[CODING] GIT에서 강제로 Push 하기 / push 에러 해결하기 ( error: failed to push some refs to )

www.hahwul.com

두개를 보고 해결하였습니다. 

 

라고 생각했는데 github에 맨 처음 레포지토리 만들면 existing folder 올리는 법이 친절하게 소개 되어있으니 그거 보고 하면 됩니다 ..

 API 통신을 하면 우리는 response 값으로 대개 Json으로 받게 됩니다.(xml 등 다른 방법도 있습니다)  그런데 문제는 이를 자바 코드로 변환 하는 과정에서 아무래도 사람이 눈으로 보다 보니 실수를 하는 경우가 많습니다. 예를 들어 스펠링 실수나 [ ]와 같이 리스트로 받아야 하는데 인지를 못하여 List를 선언을 안하는 경우가 있겠습니다.

 

그런데 아래와 같은 사이트에서는 이러한 실수를 미연에 예방시켜 줍니다. 

http://www.jsonschema2pojo.org/

 

파란색 박스로 친 부분들을 신경 써서 프로젝트에 맞게 고치면 됩니다. 지금 저 같은 경우는 자바언어를 사용하고 retrofit2 라이브러리를 사용하고  annotation style은 Gson 라이브러리를 사용해서 위와 같이 선택했습니다.

 

위의 이미지와 맞게 java파일이 생성된 걸 알 수가 있습니다.

Preview를 누르면 다음과 같은 자바코드를 확인 할 수 있습니다. 이를 Zip으로 다운 받거나 복사하여 자신이 쓰고 있는 프로젝트에 알맞게 사용하면 됩니다.

 

 

※주의 할점 : 숫자를 사용했을 경우 의도하기를 int로 의도할 경우가 많은데 해당 사이트는 Integer로 변환 시키기 때문에 주의를 요망합니다. Integer로 사용할 경우 response 값을 제대로 못 읽는 경우가 발생하기 때문입니다.

 

 

+추가로 플러그인 설치하면 바로 만들 수 있다고 한다.

이 방법도 좋아보인다.

jojoldu.tistory.com/273

 

IntelliJ에서 Json 작업 쉽게 하기

안녕하세요! 이번 시간엔 IntelliJ에서 JSON 을 쉽게 사용하는 방법에 대해 소개드리겠습니다. 모든 코드는 Github에 있습니다! 개발 도중 JSON 파일이나 코드를 사용하는 일이 빈번합니다. 그럴때마다

jojoldu.tistory.com




이거 한번 돌리면 된다 .

추가로 바텀네비게이션 뷰에서 menu를 등록했는데도 xml화면에 안보이는 경우가 있는데 그런 경우 빌드 한번 하면 잘 보인다. 

 

+ 이렇게 됐었는데 진짜 안되는 경우 에뮬레이터든 폰이든 실행 한번해주고 시간이 지나면 xml 화면에 보인다. 그리고 애당초 <selector>는 drawable이 아니라  color 폴더에 만들어서  넣고 사용하자 . 실행은 되겠지만 원칙적으로는 색깔관련이므로 color 폴더가 맞는 듯 .  계속 bottomnavigationview가 안나와서 당황 ;

 

1. 메니페스트에 <activity android:name =" .경로 . fragment."> 이런 식으로 프래그먼트를 입력하는 경우가 있다. 해당 부분에는 프레그먼트가 속해있는 액티비티를 입력하자!

 

 

 

2. 프래그먼트로 화면 전환을 하고 싶은 경우

 

틀린 코드 

 

Intent intent =new Intent(MainActivity.this, fragment.class);
startActivity(intent);

이런 식으로 intent의 두번 째 매개변수에 fragment를 쓰는 경우가 있는데 해당 매개변수는 액티비티를 받아야 하기 때문에 fragment가 fragment로 이동하고 싶으면 fragment가 붙어있는 Activity로 이동해야한다.

 

 

옳은 코드

 

Intent intent =new Intent(MainActivity.this ,SecondActivity.class);
startActivity(intent);

해당 코드는 SecondActivity에 fragment가 붙어 있다고 가정한다.

프래그먼트 안에서 context 객체가 필요한 경우에도 2가지 경우의 상황이 있다.

 

  1. 프래그먼트가 액티비티에 붙어있는 경우
  2. 프래그먼트가 아직 액티비티에 붙지 않은 경우

아래 설명은 1번 상황이라고 가정하고 공식 문서에서의 설명과 stackoverflow에서 예시를 가지고 왔다.

 

공식 문서 

 

https://developer.android.com/guide/components/fragments.html?hl=ko

 

주의: Fragment 내에 Context 객체가 필요한 경우, getContext()를 호출하면 됩니다. 하지만 getContext()를 호출하는 것은 프래그먼트가 액티비티에 첨부되어 있는 경우로 국한해야 한다는 점에 유의하세요. 프래그먼트가 아직 첨부되지 않았거나 수명 주기가 끝날 때 분리되었다면 getContext()는 null을 반환합니다.

 

 

사용법 예시 

 

https://stackoverflow.com/questions/18320713/getsupportactionbar-from-inside-of-fragment-actionbarcompat

 

getSupportActionBar from inside of Fragment ActionBarCompat

I'm starting a new project that uses the AppCompat/ActionBarCompat in v7 support library. I'm trying to figure out how to use the getSupportActionBar from within a fragment. My activity that hosts ...

stackoverflow.com

 

((AppCompatActivity)getActivity()).getSupportActionBar().setSubtitle(R.string.subtitle);

 

이런 식으로 사용한다. 그렇지만 공식 문서에도 얘기 했듯이 프래그먼트가 액티비티에 붙어 있는 경우에만 가능한 경우다. 2번 상황인 경우는 콜백 함수인 onAttach()를 사용해야 하는데 이는 시간이 나면 추가로 작성할 예정이다. 

+ Recent posts