일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 막내의막무가내 SQL
- 프래그먼트
- 프로그래머스 알고리즘
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 안드로이드
- flutter network call
- 안드로이드 sunflower
- 막내의막무가내 코틀린
- 막내의막무가내 일상
- 주택가 잠실새내
- 부스트코스
- 막내의막무가내 플러터 flutter
- 막내의막무가내 안드로이드 코틀린
- 막내의막무가내
- 2022년 6월 일상
- 막내의 막무가내 알고리즘
- 막내의막무가내 목표 및 회고
- 막내의막무가내 rxjava
- 부스트코스에이스
- 막내의막무가내 플러터
- 막무가내
- 막내의막무가내 코틀린 안드로이드
- 안드로이드 Sunflower 스터디
- 막내의막무가내 알고리즘
- 막내의막무가내 안드로이드 에러 해결
- 안드로이드
- 막내의 막무가내
- 주엽역 생활맥주
- 막내의막무가내 프로그래밍
- Fragment
- Today
- Total
목록안드로이드 (216)
막내의 막무가내 프로그래밍 & 일상
참고 : https://www.youtube.com/watch?v=49N59HnCAxQ 안드로이드의 액티비티 생명주기에 대해 간단하게 정리해보겠다. 먼저 파란배경의 launched는 아이콘을 눌러 액티비티가 나오게되는 시점이다. OnCreate()는 생성자랑 비슷하다고 생각하면된다. 처음에 액티비티가 생성되었을 때 나온다. OnStart()는 말그대로 액티비티가 시작되기 직전이라 생각하면된다. OnCreate()와 OnResume() 사이의 순서에 있다. OnResume()은 OnStart와 비슷한데 이제 액티비티가 뜨고 동작하기 완전 직전에 실행 된다. OnStart보다 액티비티가 실행되기 더 직전에 가깝다. (onPause에서 sharedpreferences에 임시저장된 데이터를 불러오는데 주로 사용..
ArrayList나 사용자가 만든 객체를 액티비티끼로 서로 전달하고 받는 과정을 예제로 기록해본다.기본타입이 아닌 리스트 또는 객체를 받아올때 단순 get000Extra로 받아올 수 가 없다. *메인액티비티( ArrayList 값과 SimpleData라는 내가 만든 객체를 전달해준다. intent.putExtra로 기본타입과 보내는 방식은 똑같으나 받는 방식이 나중에 보면 다르다. )Intent intent = new Intent(getApplicationContext(), MenuActivity.class); ArrayList names = new ArrayList(); names.add("김진수"); names.add("황수연"); intent.putExtra("names", names); Simpl..
안드로이드 프로그래밍을 하다가 모든 R이 빨갛게 에러가 날 때가 있다. 원래 잘됬다가 갑자기 R이 다 빨게지면서 에러표시가 뜨는걸 처음 본 경우 당황 할 수 가 있다. ( 나도 처음에 JDK경로 잘못했나 싶었다. 바꾼적도없는데) 그럴때는 xml을 한번 보길 바란다. xml에서 실수를 하거나 잘못 쓴 경우 R에러가 뜨는 경우가 있다. xml 레이아웃을 열어 에러표시가 있나 확인하고 수정해주자. 그 후 안드로이드 스튜디오 툴바에서 Bulid -> Rebulid를 해주면 에러표시가 사라질 것이다. 만약 이경우가 아니라면, 상단탭 Build에서 Clean Project 후 Rebuild Project를 해보던가, File탭 Project Structure에서 JDK, SDK경로가 잘되있는지 확인해보도록 하자. ..
액티비티와 프래그먼트끼리 데이터를 전달해주기 위해 Bundle을 찾아보던 도중 딱 맞는 예제가 있어 기록해논다.밑의 사이트에서 예제를 볼 수 있다.참고 : https://stackoverflow.com/questions/7149802/how-to-transfer-some-data-to-another-fragment 난 위의 예제를 참고해 다음과 같이 Bundle을 사용해 액티비티에서 프래그먼트에 데이터를 전달해줬다. * 액티비티쪽에서 전달할 데이터 저장//프래그먼트(영화리스트) movies = new MoviesFragment(); Bundle bundle = new Bundle(); bundle.putString("title", movieInfo.title); bundle.putFloat("reserv..
이번에 이미지가 있는 URL을 파싱해와서 이 URL을 어떻게 이미지로 받아서 사용할 수 있을까 하다가 Glidle 라이브러리를 써서 이미지가 있는 URL을 이미지로 변환하여 사용할 수 있었다. Glide말고도 스퀘어사에서 만든 Picasso 라이브러리도 찾았지만 좀 더 대중적으로 사용하는 Glide를 사용하게 되었다. 둘이 비교하면 용량이적고 빠른건 Glide이고 용량과 상대적으로 조금더 느리지만 화질이 좋은건 Picasso라고한다. 잘 비교해서 더 필요한걸 사용하면 좋을 것 같다. https://github.com/bumptech/glideGlide 레포지토리고 구글에서 개발했다고 한다. Glide 사용방법에 대해 간단하게 정리해보았다.먼저 Glide를 사용하기위해 Gradle module에 추가해준다..
주석설명 달아논거 이해 안까먹게 복습용 메인 package com.example.a82107.myrecycleview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { RecyclerView recyclerView; SingerAdapter adapt..
출처및 참고 : https://developer.android.com/guide/components/fragments?hl=ko 프래그먼트 관련 코딩을 하다가 프래그먼트는 액티비티와 다르게 onBackPressed()를 오버라이딩을 할 수 없어서 이 메소드에 뒤로가기 관련 이벤트를 처리할 수 없었다. 그래서 당시에 프래그먼트를 띄워줬을 때 뒤로가기를 누르면 현재 띄어진 프래그먼트를 참조하고 있는 Fragment 객체를 프래그먼트 관리자를 통해 remove를 해주고 null로 초기화해줬었다.밑에처럼 말이다. 참고로 moveinfo는 프래그먼트고 이미 액티비티에서 올라가있는 프래그먼트가 있는데 그 프래그먼트에서 버튼을 누르면 이 moveinfo가 담고있는 프래그먼트가 올라가는 상황이다.액티비티 내의 오버라이..
처음에 안드로이드 스튜디오를 사용할때 깃허브에다가 따로 백업을 안해두고 그냥 프로젝트를 복사 붙여넣기로 다른 폴더에 백업파일을 만드는 경우가 있다. 그런데 이런 경우 백업파일을 실행했을 때 이와 같이 install falied invald apks라는 에러가 난다. 이 경고문을 Ok눌러도 계속 에러가나고 무한반복적으로 에뮬레이터가 실행이 안된다. 그 에러를 해결하기 위한 방법은 다음과 같다. 프로젝트 상단툴바에 Build->Clean project를 하고 Rebuild project후에 실행을 하는것이다. 처음 안드로이드를 프로젝트를 복사해서 했다가 이러한 에러때문에 시간을 많이 날린적이 있다. 댓글과 공감은 큰 힘이됩니다!!
네트워킹 http 프로토콜에 접속하는 작업을 할 경우 Cleartext Http Traffic이라는 에러가 뜨는 경우가 있다. 이것은 안드로이드 API 28레벨부터 네트워크 보안정책때문에 생기는 오류이다. 위 그림은 버튼을 누르면 해당 url로 접속을 해서 파싱을 해오는 거였는데 이와 같은 오류가 뜸을 볼 수 있었다. 난 이러한 문제를 위 그림과 같이 해결하였는다. manifest에 aplication태그에 android:usesCleartextTraffic="true"를 추가하였다. 이것을 true로 해놈으로써 cleartext트래픽이 허용되게 된다.
https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa/related?hl=ko 위 사이트에 들어가서 밑과 같은 크롬 확장프로그램을 다운받으면 크롬 브라우저로 json포맷을 볼때 자동으로 정렬하여 볼 수 있다.
json 포맷이 다음과 같이 일렬로 쭉 늘어져있는 경우 가독성이 떨어진다. 이런 포맷을 보기좋게 바꿔주는 사이트가 있다.JSON VIEWER라는 사이트이다.주소 : http://jsonviewer.stack.hu/#http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=430156241533f1d058c603178cc3ca0e&targetDt=20120101 사용방법(심플하게!) 1. 먼저 위에 사이트에 접속한다음 TEXT에 JSON포맷의 문자를 복사 붙여넣기 해준다. 2. 그 다음 2번째 줄 탭에 있는 FORMAT을 클릭해준다. 그럼 다음과 같이 보기 좋게 바꿔준다. 복잡하고 보기힘들게 ..
출처 및 참고:https://www.edwith.org/boostcourse-android/lecture/17091/ Volley 라이브러리는 안드로이드 애플리케이션을 위한 네트워킹을 보다 쉽고 빠르게 만들어주는 HTTP 라이브러리입니다. build.gradle(Module)에 implementation 'com.android.volley:volley:1.1.0' 추가해야합니다. 또한 manifests에 도 추가해줘야 기능을 사용할 수 있습니다. Volley는 웹 요청과 응답을 단순화 시키기 위해 만들어진 라이브러리들 중 하나로서 그중에서도 가장 많이 사용되는 라이브러리 중 하나입니다. 장점은 앞서 말한것처럼 사용자가 직접 스레드 핸들러를 사용해서 네트워킹을 구현하지 않아도 되므로 훨씬 편하고 코드 양도..
스레드는 동시작업을 할려면 필요한 하나의 작업단위라고 볼 수 있다. 예를들어, 코드에 따로 스레드를 생성 및 실행을 안하고 실행시킨 경우 메인스레드라고 하는 것만 작업을 하고 있는거다. (즉 스레드를 배우지 않았을 때의 안드로이드 프로그래밍은 메인스레드 하나만 돌아가고 있던거라고 보면된다.) 하지만 동시에 여러작업을 하기 위해서는 스레드를 생성하고 실행시켜야하고 이를 구현할 줄 알아야한다. 이러한 사용법을 예시코드로 남겨본다. 그러나 구현하는데있어서 주의해야할 점이 있다. xml즉 UI부분에 접근하는 것은 스레드 2개가 동시에 접근을 할 수 없다. 그래서 기본적으로는(초기) 메인스레드만 UI에 접근 할 수 있고 메인 외 다른 스레드들은 별도의 제어를 통해 UI부분을 다뤄야한다. 이러한 제어중에 핸들러라는..
인텐트는 애플리케이션 구성 요소 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. Intent는 일종의 메시지 객체입니다. 이것을 사용해 다른 앱 구성 요소로부터 작업을 요청할 수 있습니다. 인텐트가 여러 구성 요소 사이의 통신을 용이하게 한다. 인텐트의 자세한 사항은 안드로이드 개발자문서를 참고하면된다. 인텐트 문서 : https://developer.android.com/guide/components/intents-filters?hl=ko 인텐트:액션+데이터 액티비티A =================> 액티비티B (3)onActivityResult()
[2021-04-17 업데이트] 안드로이드에서는 기본 메인(UI) 스레드가 아닌 다른 스레드(Woker Thread, 작업스레드)에서 UI객체에 직접 접근하는것은 불가합니다. 또한 안드로이드에서는 서버 혹은 데이터베이스와의 비동기 통신은 백그라운드 스레드(Woker Thread, 작업스레드)를 사용해야한다는 특징이 있습니다. 그럼 비동기로 DB에서 값을 가져온 후 UI업데이트를 하려면 어떻게 해야할까요? 서버와의 통신에 백그라운드 스레드를 사용하고 비동기적인 결과를 메인스레드를 사용해 UI 업데이트하고 아주 복잡하겠죠...? 백그라운드 작업결과와 관련된 UI업데이트 작업이 여러개면 더더욱 복잡해지고요.. ㅠ 이를 위해 핸들러를 사용하기도 하지만 핸드러를 사용하면 코드가 복잡해지고 초보자가 사용하기 어렵다..