Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 플러터 설치 2022
- 안드로이드 라이선스
- 서비스 vs 쓰레드
- android retrofit login
- 자바 다형성
- 스택 큐 차이
- 스택 자바 코드
- 멤버변수
- ar vr 차이
- 안드로이드 라이선스 종류
- 안드로이드 유닛테스트란
- Rxjava Observable
- 객체
- rxjava hot observable
- rxjava cold observable
- rxjava disposable
- 클래스
- 안드로이드 os 구조
- 안드로이드 유닛 테스트 예시
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 레트로핏 사용법
- jvm 작동 원리
- 큐 자바 코드
- android ar 개발
- 2022 플러터 설치
- 서비스 쓰레드 차이
- jvm이란
- 안드로이드 유닛 테스트
- 안드로이드 레트로핏 crud
- ANR이란
Archives
- Today
- Total
나만을 위한 블로그
[Android] 커스텀 다이얼로그로 액티비티 종료하기 본문
728x90
반응형
써본 적이 없던 커스텀 다이얼로그를 써 보고 싶어서 쓰던 중 확인 버튼을 누르면 액티비티를 종료시켜야 할 상황이 생겼다.
그래서 방법을 생각해봤다.
1. 커스텀 다이얼로그의 xml, 자바 파일을 만든다.
2. 자바 파일에서 확인 버튼에 클릭 리스너를 만든다.
3. 클릭 리스너 안에 메인 액티비티를 종료시키는 코드를 넣는다.
이런 순서로 구현하면 되겠다 싶어 그대로 해봤다.
그러나 3번에서 막혔다. 다이얼로그는 dismiss()를 써서 종료시킨다고 해도 메인 액티비티는 어떻게 종료시키지?
답은 컨텍스트에 있었다.
커스텀 다이얼로그 안에 Context를 전역 변수로 선언하고, 다이얼로그 확인 버튼에서 context 변수를 해당 액티비티로 캐스팅하면 된다.
그러면 이 컨텍스트를 통해 finish()를 호출할 수 있게 되고, 내가 원하는 액티비티를 종료할 수 있게 된다.
아래는 내가 사용한 코드다. setOnClickListener() 안의 코드가 람다식으로도 가능하다는 메시지가 나와서 바꿨기 때문에 코드가 람다식 형태다.
ok.setOnClickListener(view -> {
Toast.makeText(context, "메인 액티비티 종료", Toast.LENGTH_SHORT).show();
dialog.dismiss();
((MainActivity)context).finish(); <- 이 부분이 중요하다
});
반응형
'Android' 카테고리의 다른 글
Comments