본문 바로가기

분류 전체보기

(93)
외부 터치시 종료 막는 방법 Dialog가 보여지고 있는 상황에서 외부터치를 통해 종료되는것을 막는 방법 방법1. Dialog를 보여주는 클래스에 show()를 Override하여 추가하여 준다.@Overridepublic void show() { super.show(); this.setCancelable(false); //외부 클릭시 창닫기 금지} 방법2. Dialog를 보여주는 클래스에 setCancelable(false)를 설정setCancelable(false); 방법3. Dialog 선언하고 코드관리하는 부분에서 설정dialog.setCancelable(false);
TextWatcher public abstract void afterTextChanged (Editable s) 이 메소드는 내부 어딘가에서 텍스트가 벼경되었음을 알리기 위해 호출 됩니다. 이 콜백에서 추가 변경 가능하지만 무한 루프에 빠지지 않게 조심해야 합니다 변경 사항을 적용하면 이 메서드가 재귀적으로 다시 호출되기 때문입니다.(다른 afterTextChanged() 메소드가 이미 다른 변경을 수행하고 오프셋을 무효화했을 수 있으니 변경이 발생한 위치 알수 없습니다 그러나 여기서 알아야 할 경우 Spannable#setSpanin을 사용하여 onTextChanged(CharSequence,int,int,int)위치를 표시한 다음 여기에서 찾아볼 수 있습니다. 매개변수 s Editable public abstract vo..
git 오류 The requested URL returned error: 403 403오류는 해당 레포지토리 주소에 접근 권한이 없을 경우 발생한다고 한다. remote: Permission to NBC-Project-closer/Closer.git denied to catandbutler. fatal: unable to access 권한이 거부되어 엑세스 할수 없다고 떠서 원격저장소에 등록 되어있는지 확인하고 git remote -v 토큰 등록도 다시해보고 하였지만 상황은 여전했다 그래서 안드로이드 어플에 git 로그인 되어있나 확인 했지만 연결은 잘되어 있었다 안드로이드 자체 프로그램으로 git push를 해보니 로그인하라고 팝업창이 떠서 로그인하고 push하니 push가 성공! 이제 해결 된건가 싶어서 add, commit 후 다시 push 했는데 여전한 git 오류 The r..
사용자 정의 오류보다는 표준 오류를 사용하자 require, check, assert 함수를 사용하면, 대부분의 코틀린 오류를 처리할 수 있습니다. 하지만 이외에도 예측할지 못한 상황을 나타내야 하는 경우가 있습니다. 예를 들어 Json 형식을 피시아는 라이브러리를 구현한다고 해 봅시다. 기보적으로 입력된 Json파일의 형식에 문제가 있다면 JSONParsingException등을 발생 시키는 것이 좋습니다. inline fun String.readOBJect(): T{ // ... if(incorrectSign){ throw JsonParsersingException() } // ... return result } 표준라이브러리를 사용하면 다른사람들이 더 쉽게 배우고 이해할수 있습니다. 일반적으로 사용되는 예외 IllegalArgumentExce..
onBackPressed() onBackPressed () 란? 액티비티에서 사용자가 뒤로 가기 키를 눌렀을때 이를 감지하여 호출되는 메서드입니다. 주로 뒤로 가기 클릭 시 행동을 제어할 때 사용했습니다. 하지만 API 레벨 33부터 더이상 사용되지 않는다고 안드로이드 디벨로퍼 공식문서에 명시되었고 대신 OnBackInvokedCallback 또는 androidx.activity.OnBackPressedCallback 를 사용하기를 권고하고 있습니다. FragmentActivity와 AppCompatActivity의 기본 클래스인 ComponentActivity를 사용하면 OnBackPressedDispatcher(getOnBackPressedDispatcher()를 호출하여 가져옴)를 사용하여 뒤로 버튼의 동작을 제어할 수 있습니..
Serialization,Parcel,Parcelable 직렬화란(Serialization)? Serializable 어디서 많이 봤을 것이다. Retrofit을 사용할 때 모델 클래스에 @Serializable 이라는 어노테이션을 붙여서 사용하는데 그렇다면 이게 왜 필요할까? 직렬화는 객체를 전송 가능한 형태로 만들어주는 것이다. 즉 객체 데이터를 연속적인 데이터로 변형해서 데이터를 읽을 수 있도록 하는 것이다. 역직렬화란(Deserialization)? 이름에서부터 감은 왔을텐데 말 그대로 직렬화된 파일의 스트림 데이터를 읽어서 원래 객체의 형태로 복원하는 과정이다. Parcel이란 짐을 싸듯이 객체를 싸는 클래스이다 , paecel 클래스는 직렬화시 Containner역할을 하는 클래스로 말 그대로 꾸러미이다 안드로이드는 프로세스간 통신을 위해 bundl..
예외를 활용한 코드 제한 확시하게 어떤 형태로 동작해야 하는 코드가 있다면 예외를 활용해 제한을 걸어주는 것이 좋습니다 동작 제한 방법 require 블록 : 아규먼트를 제한할 수 있습니다. check 블록 : 상태와 관련된 동작을 제한할 수 있습니다. assert 블록 : 어떤 것이 true인지 확인할 수 있습니다. assert 블록 테스트 모에서만 작동 return 또는 throw와 함께 활용하는 Elvis 연산자 fun main(num: Int = 1):List{ require(num = 0) return if (n = 0){"not $n" + "be 0"} return if (n
액티비티 생명주기 예 package com.example.basic import android.content.Intent import android.os.Bundle import android.util.Log import android.widget.Toast import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope import com.example.basic.databinding.ActivityMainBin..