[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 |
