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 );
        }
}