아래와 같은 코드에서, lateinit var test: String override fun onCreate(saveInstanceState: Bundle?){ super.onCreate(saveInstanceState) setTest("안녕하세요!") System.out.println(test) } fun setTest(text: String) { Handler().postdelayed({ test = text }, 1000) } lateinit은 게으른, 느린 초기화를 의미한다. 느린 초기화란 메모리를 아끼기 위해서 변수가 필요할 때 초기화 하는 것을 의미한다. 하지만 이 변수를 초기화 하지 않고 사용한다면 초기화 에러가 뜬다. 위의 코드를 보면 1000 밀리세컨드가 지나간 다음에 test가 초기화 ..
전체 글
코드만 봐도 다 알 수 있다.android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "com.connple.weat" minSdkVersion 26 targetSdkVersion 29 versionCode 3 versionName "3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { // 여기 // false -> true minifyEnabled true // 여기 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-ru..
인스타그램 같은 어플을 보면 아래로 스와이프 한 후 컨텐츠를 새로고침 해야할 때가 있다. 그럴 때 아주 유용한 레이아웃이다. 1. 아래와 같이 새로고침 하고자 하는 뷰를 SwipeRefreshLayout으로 감싸준다. 2. 뷰의 SwipeRefreshLayout을 변수에 저장한 후 setOnRefreshListener를 호출해서 함수를 실행한다. setColorSchemeResources는 돌아가는 동그라미의 배경 색과 동그라미 색을 정하는 코드이다. val listSwipeRefreshLayout = fragmentView.fragment_home_list_swipe_layout listSwipeRefreshLayout.setOnRefreshListener { getReviews() updateLayo..
간단하게 알럿 다이얼로그를 이용해서 로딩 중을 만드는 방법이다. 1. ProgressBar를 포함한 간단한 레이아웃을 만든다. 2. 다이얼 로그를 여러 곳에서 이용하기 위해 클래스와 함수로 만들어준다. class Dialog(private val context: Context) { private val view: View? = LayoutInflater.from(context).inflate(R.layout.alert_dialog_progressbar, null) private val builder = AlertDialog.Builder(context) private val dialog: AlertDialog = builder .setCancelable(false) .setView(view) .creat..
유튜브, 인스타그램과 같은 게시글들을 보면 게시글에 몇 년전,,, 몇 달전, 몇 일전 등등과 같이 표기되어 있다. 자바의 기본 라이브러리를 활용해 이와 같은 기능을 만드는 함수의 소스코드이다. 같은 인턴하시는 분께서 java.time의 라이브러리들을 이용해 뚝딱 만드셨다... ㄷㄷ createAt에서 createAt값을 가진 LocalDateTime 객체를 생성하고 now에서 현재 값을 생성한 후 ChronoUnit으로 값을 계산한 후 리턴한다. class TimeStamp{ fun timestampToString(createdAtDate: Date): String { val createdAt = LocalDateTime.ofInstant(createdAtDate.toInstant(), ZoneId.sy..
뷰페이저의 가장 상위 자식의 layout_width, layout_height의 크기가 match_parent가 아닐 때 나타나는 오류이다. android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" 생각보다 간단한 오류인데 해결하는데 애먹었다...