Android 9

fragments 에서 view binding을 사용하기 위한 패턴

아래는 google이 보여줬던 기본 패턴이다. 그냥 이것을 바탕으로 살을 붙이면 된다. binding 변수를 사용하는 이유 _binding은 nullable 이라서 매번 _binding?.okButton 같은거 해주기 불편해서이다.(출처) onDestoryView()에서 _binding 에 null을 대입 하는 이유 memory leak 방지 private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: Layo..

OkHttp의 Network Interceptor

아래와 같이 Retrofit builder에 interceptor를 넣어서 디버깅하면 편리 하다. 아래 주석을 한 것처럼 원하는 데이터만 출력 하는 방법이 있는가 하면, HttpLoggingInterceptor 객체를 생성하여 level만 정해 주고 그냥 쓰는 방법이 있다. HttpLoggingInterceptor로 왠만한 정보를 볼 수 있다. interface GithubApi { @GET fun getUserList(@Url url: String) : Observable } object GithubApiProvider { fun provideGithubApi(): GithubApi { return Retrofit.Builder() .baseUrl(Constant.BASE_URL) .client(pro..

Stetho로 Sqlite db 들여다 보기

Stetho.initializeWithDefaults(this); Stetho로 안드로이드 내부의 sqlite db를 들여다 볼 수 있다. (SharedPreference값, 네트워크상태 등의 정보고 볼 수 있다.) 1. gradle에 dependencies 에 아래를 추가 implementation 'com.facebook.stetho:stetho:1.5.1' 2. MainActivity의 onCreate()에 초기화 코드 추가 @Override protected void onCreate(Bundle savedInstanceState) { .. Stetho.initializeWithDefaults(this); .. } 3. 크롬의 chrome://inspect 페이지에 가서 확인하기 4. 끝. 더 자세..

Retrofit으로 REST API 사용하기

지난 글은 라이브러리 사용하지 않고, REST API를 사용하는 것을 해보았다면, 이제는 Retrofit이라는 라이브러리를 통해서 REST API를 사용하는 것을 해보겠다. 목표 : Retrofit으로 REST API를 사용해보자. 작업 순서1. 받을 response를 바탕으로 Contributor을 먼저 만들고2. Retrofit을 통해서 통신할 interface 모듈을 만들고3. Retrofit 인스턴스를 생성해서 사용한다. 별도 HTTP를 통신을 할 필요 없고, 파싱도 알아서 해준다. 거기다 속도도 더 빠르다. 짱임... public class Contributor { private String login; public String getLogin() { return login; } public v..

REST API 사용하기 - GET

요즘에 REST API 소스를 직접 짜는 사람은 적을 것이라고 예상한다. (레트로핏 같은 걸 쓰겠지...?)그래도 의미가 있지 않을까 해서 정리 해본다. https://api.github.com 로 접속해서 그 중에 "current_user_url" 항목을 화면에 띄우는 예제이다. /* * 목표 * 1. AsyncTask와 http url connection을 이용한 http 호출 만들기 * 2. 리턴된 json을 파싱하는 방법을 통하여 JSON 객체 다루는 법 습득하기 * 3. json 객체에서 원하는 데이터 빼내서 화면에 출력하기 * * 작업 순서 * 1. 받을 response를 바탕으로 HubObject를 먼저 만들고 * 2. 통신할 모듈과 파싱할 모듈을 APIClient로 만들고 * 3. APIC..

CustomDialog Fragment 예제

DialogFragment 를 이용해서 팝업이 뜨는 것을 구현해 봤다..아래 구문은 다음에 쓰일 수도 있을 것 같아서 표시해둔다. * DialogFragment를 호출하는 것이 Fragment일 때, support 버전을 맞춰줘야지 컴파일 문제가 없어진다. 즉, android.support.v7.app의 Fragment는 android.support.v7.app.DialogFragment의 DialogFragment를 호출해야 하고, android.support.v4.app의 Fragment는 android.support.v4.app.DialogFragment의 DialogFragment를 호출해야 함Fragment prev = fm.findFragmentByTag(DIALOG_TAG); package ..

Activity 간 데이터 주고 받기

startActivityForResult(Intent i, int requestCode) 와 onActivityResult(int requestCode, int resultCode, Intent data)가 쌍으로 이루어져 Activity간 데이터를 주고 받을 수 있다. getIntent() 함수는 현재 Intent를 호출한 Intent를 반환한다.(Return the intent that started this activity.) 즉, 아래 예제에서 Activity B에서 getIntent()를 실행하면 Activity A의 Intent i 가 리턴 되는 것이다. + Activity A @Override public void onClick(View v) { // TODO Auto-generated me..

Intent를 이용한 클래스간 데이터 전달

Intent를 이용하면 클래스간 데이터 전달을 할 수 있다. 참 좋지요~ + public class DataTransferBetweenClasses extends Activity implements OnClickListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.planview); btn.setOnClickListener(this); } @Override p..

버튼 이벤트로 화면 전환하기

class 선언할 때 - 최상위 클래스에 이벤트를 처리 하려면 implements OnClickListener 를 입력한다. - layout 생성 - title string 생성 - manifest.xml에 등록 은 필수이다. + package com.pacakage.example; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class ChangeWindows extends Activity implements ..