Alex Volovoy'un cevabını biraz daha detaylandırarak -
u bu sorunu fragmanlarla alıyorsanız, bağlamı elde etmek için getActivity () iyi çalışır
Diğer Durumlarda:
Kullanmak istemiyorsanız
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//not recommend
OutsideClass'ınızda böyle bir işlev yapın -
public void gettingContext(Context context){
real_context = context;//where real_context is a global variable of type Context
}
Şimdi, ana etkinliğinizde yeni bir OutsideClass yaptığınızda, OutsideClass'ı etkinliğin bağlamını bağımsız değişken olarak tanımladıktan hemen sonra yukarıdaki yöntemi çağırın. Ayrıca ana faaliyetinizde bir işlev
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
şimdi OutsideClass'ınıza geri dönün ve yeni etkinliklere başlamak için böyle bir şey yapın-
@Override
public void onClick(View v) {
........
case R.id.any_button:
MainActivity mainAct = (MainActivity) real_context;
mainAct.startNewActivity("ACTIVITY_KEY");
break;
}
........
}
Bu şekilde bayraklarla uğraşmadan farklı OutsideClass'tan farklı aktiviteler başlatabileceksiniz.
Not-Bağlam nesnesini parça için yapıcı aracılığıyla önbelleğe almamaya çalışın (bağdaştırıcıyla, para cezası ile).
aramayı unutma
OutsideClass.gettingContext(Context context);
onResume () işlevinde de kullanılabilir.