마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

onDraw Canvas 함수 안에서 intent 추가 질문합니다.!!

0 추천
현재

public void onDraw (Canvas canvas){

 

지금 이 함수 안에서 계속 그림을 그리고있는데요

특정한  값에서 그림을 멈추는것 까지는 가능하게했습니다.

      if(value == 특정한값)

      {

               mstop = true  // 그림 멈추는 함수

      }

}

 

문제 는 저 if문안에  intent 로 새 액티비티를 불러오고싶은데

 

Intent intent = new Intent(       *******    , new.class);

startActivity(intent)

 

*****부분을 어떻게 써야할지 모르겟습니다.

 

context 가 호출자 정보니까 this 아닌가요??

onDraw Canvas 안에있어서 this가 안되는건가요 ㅠ
kjlolo0 (370 포인트) 님이 2014년 2월 12일 질문

3개의 답변

0 추천
직접 그림을 그리는 것이라면 View를 상속하여 그리는건가요? 그럼 onDraw안에서 this를 하면 해당 클래스(View를 상속받은 클래스)를 넘겨주게 되는것과 같은것이 아닌가요? 그러니 현재 Activity의 Context를 얻어와서 인자로 넘겨주어야 하지 않을까합니다. Intent 사용은 질문에 있는 것과 같이 하면 됩니다.
인연 (31,880 포인트) 님이 2014년 2월 12일 답변
0 추천
초보개발자ㅠ (33,870 포인트) 님이 2014년 2월 12일 답변
0 추천
View도 해당 어플리케이션의 Context를 가지고있습니다.

다만 Activity의 부모가 ContextWrapper라 this로 호출하는것이구요

View안에서는 getContext()로 얻을 수 있습니다.

Activity에서도 this 보단 getApplicationContext를 이용하는 습관을 들이시는게 좋습니다.

 

여담으로... Context 를 받지만 Activity의 윈도우 정보가 필요한듯한 메서드는 AlertDialog 사용시에 있죠...

Context를 요구하면서 Activity를 건데주지않고 getApplicationContext를 건네주면 에러가 나더군요..

 

 

또하나...

onDraw안에서 instance가 생성되는 것(new SomeClass())은 좋지못한 방법이죠...

저라면... BroadcastReceiver를 따로 구현해서 onDraw안에서는 sendAction 동작만 하고 BroadcastReceiver에서 해당 action을 받아 Intent생성 및 startActivity 하겠습니다.
칠리님 (10,910 포인트) 님이 2014년 2월 12일 답변
...