Si tengo una referencia al Context
, ¿es posible finalizar la actividad actual?Cerrar la actividad actual cuando solo tiene una referencia al contexto
No tengo la referencia a la actividad actual.
Si tengo una referencia al Context
, ¿es posible finalizar la actividad actual?Cerrar la actividad actual cuando solo tiene una referencia al contexto
No tengo la referencia a la actividad actual.
sí, con un elenco:
((Activity) ctx).finish();
Solo si es la actividad actual; de lo contrario, la actividad no actual se terminará :) – ernazm
Esto podría generar problemas si el 'Contexto' es realmente un contexto de aplicación. – user634618
cómo hacerlo si el contexto es un contexto de aplicación. Estoy ejecutando un subproceso de temporizador en una clase y si el tiempo termina quiero cerrar la actividad actual de esa clase. – Sando
Si usted tiene acceso a la vista de funcionamiento de la actividad que desea terminar (por ejemplo, que se encuentran en un detector de clics), se puede hacer:
((Activity)getContext()).finish();
(con agradecimiento a 2red13 para conseguirme aquí).
En mi caso después trabajaron,
tengo que terminar mi actividad en un AsyncTask onPostExcute().
Donde mi clase AsyncTask es clase pública separada, que tiene un constructor con parámetro de Contexto.
((Activity)(mContext)).finish();
Sólo lo anterior trabajó para mí ... De todos modos tengo esta idea de @ 2red13 y @lucy respuestas ... Gracias a todos ...
Esto es ahora forma diferente '((Actividad) mContext) .finish()'. – prakharsingh95
Probar:
((Activity) context.getApplicationContext()).finish();
¡No use esta "solución"! No puede adivinar (y probablemente siempre esté equivocado) que su contexto de Aplicación es el mismo que su Actividad. – marciowb
sé que es una entrada antigua, pero, tal vez podría ser una buena idea llamar de esta manera:
if(context instanceof Activity){
((Activity)context).finish(); }
de esta manera nos aseguramos de que no reciben ningún u ClassCastExceptions nnecesary
Si inicia la actividad usando:
startActivityForResult(i, 1);
puede llamar finishActivity (1) para terminar todas las actividades comenzaron con ese código de solicitud, así:
((Activity)getContext()).finishActivity(1);
En mi caso Necesito usar uno en un controlador postDelayed. Usando esto, puede estar seguro de qué actividad está terminando. ¡Espero eso ayude!
Tuve el mismo problema al cerrar una actividad de preferencia. Aquí es lo que hice:
public class T2DPreferenceActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content,
new T2DPreferenceFragment()).commit();
}
public static class T2DPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.server_screen_preference);
Preference testServicePreference = getPreferenceScreen().findPreference("PREFERRED SERVER");
testServicePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
T2DPreferenceActivity.closeActivity(getActivity());
return true; //returning true still makes the activity handle the change to preferences
}
});
}
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ListView lv = (ListView)view.findViewById(android.R.id.list);
ViewGroup parent = (ViewGroup)lv.getParent();
parent.setPadding(0, 100, 0, 0);
}
}
protected static void closeActivity(Activity activity) {
activity.finish();
}
}
http://stackoverflow.com/questions/8586818/finish-activity-from-custom-view-using-context/25854387#25854387 Tener un vistazo a este publicación :) – quicksilver