제가 구현한 앱에서는 앱 실행시 공지사항을 띄워주는데 이를 Dialog를 사용하여 표시합니다.
근데 이 공지사항에서 바로 인터넷 url 주소로 넘어가야 하는 상황이 생겼습니다.
처음은 일반적인 구현으로
했으나
error: method startActivity in class ContextCompat cannot be applied to given types;
startActivity(intent);
^
required: Context,Intent,Bundle
found: Intent
다음과 같은 오류를 뱉어냈습니다. 이경우 아주 간단한 해결책이 있습니다.
바로 this를 이용하는 것입니다.
해당 오류의 경우 현재 context를 파악하지 못하기때문에 어느 액티비티에서 intent를 넘기는 건지 특정하지 못하기때문에 발생합니다. 따라서 현재 다이얼로그가 호출된 액티비티 context를 가져오면 해결되는 문제입니다.
현재 다이얼로그는 public class NotificationDialog extend Dialog { } 이렇게 구현이 되어있습니다.
따라서 코드 구현 부에
String URL = "http://naver.me/FaVUY1Q0";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URL));
NotificationDialog.this.getContext().startActivity(intent);
다음과 같이 구현하주면 됩니다.
정리하자면
<해당 Activity의 Class 명>.this.startActivity(intent);
입니다.
'개발 > 안드로이드' 카테고리의 다른 글
[안드로이드] 앱 업데이트를 관리하는 방법 #1 (11) | 2020.06.02 |
---|---|
[안드로이드] FCM 클릭시 이벤트 처리하기 (3) | 2020.05.27 |
[안드로이드] 구글은 왜 DP(Density-independent Pixel) 만들었을가 (0) | 2020.05.21 |
[안드로이드] 원하는 좌표를 구글맵 화면에 표시해보자(LatLngBounds) (0) | 2020.05.16 |
[안드로이드] 네이버 길찾기 api 파싱해서 구글맵 폴리라인 찍기 (1) | 2020.05.11 |
댓글