[Android] Activity 클래스가 아닌 클래스(OnClickListener)에서 StartActivity 실행 방법
Programming/Android 2015. 4. 19. 00:15
Activity Class 가 아닌 Class 에서 다른 Activity 를 실행하면 다음과 같은 에러가 발생한다.
1. Sample Code (Error 발생)
class OnClickMyListener implements OnClickListener { // 중략.. @Override public void onClick(View v) { it = new Intent(v.getContext(), ChatActivity.class); it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); v.getContext().startActivity( it ); } }
2. 에러 메시지 내용
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
위의 에러메시지가 떠서 FLAG_ACTIVITY_NEW_TASK 를 intent 에 addFlag 해도 에러가 사라지지 않는다.
이럴 때에는 아래의 3번까지 적용하면 문제를 잡을 수 있다.
3. 해결방안
상위 클래스의 Context Intance를 받아서 이값으로 startActivity를 실행하면 된다.
단, 이 때, FLAG_ACTIVITY_NEW_TASK 를 설정하는 것도 잊지 않도록 한다.
class OnClickMyListener implements OnClickListener { Context m_Context; public OnClickMyListener(Context ctx, ContactManager.Contact contact) { m_Context = ctx; m_contact = contact; } @Override public void onClick(View v) { it = new Intent(m_Context, ChatActivity.class); it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); m_Context.startActivity( it ); } }
'Programming > Android' 카테고리의 다른 글
[Android] ListView 에 업데이트 되었음을 알려주기 + Auto Scroll (0) | 2015.05.20 |
---|---|
[Android] Nexus5 에 롤리팝 이미지 수동 업데이트 (0) | 2015.05.14 |
[Android Developing] 안드로이드 폰 부팅 완료 메시지 수신 (0) | 2015.04.12 |
[단축키] Android Studio Short-Cut Key (0) | 2015.04.12 |
[Debug] Keyword : application crash report for android (0) | 2015.04.11 |