본문 바로가기
개발/안드로이드

[안드로이드] dialog 안에서 startActivity사용하기

by 핸디(Handy) 2020. 5. 25.

제가 구현한 앱에서는 앱 실행시 공지사항을 띄워주는데 이를 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);

입니다.

댓글