Elaborando um pouco mais a resposta de Alex Volovoy -
caso você esteja tendo esse problema com fragmentos, getActivity () funciona bem para obter o contexto
Em outros casos:
Se você não quiser usar-
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//not recommend
faça uma função como essa no seu OutsideClass -
public void gettingContext(Context context){
real_context = context;//where real_context is a global variable of type Context
}
Agora, em sua atividade principal, sempre que você criar uma nova OutsideClass, chame o método acima imediatamente após definir o OutsideClass, fornecendo o contexto da atividade como argumento. Também em sua atividade principal, faça uma função
public void startNewActivity(final String activity_to_start) {
if(activity_to_start.equals("ACTIVITY_KEY"));
//ACTIVITY_KEY-is a custom key,just to
//differentiate different activities
Intent i = new Intent(MainActivity.this, ActivityToStartName.class);
activity_context.startActivity(i);
}//you can make a if-else ladder or use switch-case
agora volte para o OutsideClass e, para iniciar uma nova atividade, faça algo assim:
@Override
public void onClick(View v) {
........
case R.id.any_button:
MainActivity mainAct = (MainActivity) real_context;
mainAct.startNewActivity("ACTIVITY_KEY");
break;
}
........
}
Dessa forma, você poderá iniciar atividades diferentes chamadas de OutsideClass diferentes sem mexer nos sinalizadores.
Nota: Tente não armazenar em cache o objeto de contexto via construtor para fragmento (com adaptador, tudo bem). Um fragmento deve ter um construtor vazio, caso contrário, o aplicativo trava em alguns cenários.
lembre-se de ligar
OutsideClass.gettingContext(Context context);
na função onResume () também.