Wenn ich einen Verweis auf habe Context
, ist es möglich, die aktuelle Aktivität zu beenden?
Ich habe keinen Hinweis auf die aktuelle Aktivität.
Wenn ich einen Verweis auf habe Context
, ist es möglich, die aktuelle Aktivität zu beenden?
Ich habe keinen Hinweis auf die aktuelle Aktivität.
Antworten:
ja, mit einer Besetzung:
((Activity) ctx).finish();
Context
es sich tatsächlich um einen Anwendungskontext handelt.
In meinem Fall hat folgendes funktioniert,
Ich muss meine Aktivität in einer AsyncTask onPostExcute () beenden.
Wobei meine AsyncTask-Klasse eine separate öffentliche Klasse ist, die einen Konstruktor mit dem Parameter Context hat.
((Activity)(mContext)).finish();
Nur das oben Genannte hat bei mir funktioniert ... Wie auch immer, ich habe diese Idee von @ 2red13 und @lucy Antworten bekommen ... Danke an alle ...
((Activity) mContext).finish()
.
Ich weiß, dass es ein alter Beitrag ist, aber vielleicht könnte es eine gute Idee sein, ihn so zu nennen:
if(context instanceof Activity){
((Activity)context).finish(); }
Auf diese Weise stellen wir sicher, dass wir keine unnötigen ClassCastExceptions erhalten
Wenn Sie die Aktivität starten mit:
startActivityForResult(i, 1);
Sie können finishActivity (1) aufrufen, um alle mit diesem Anforderungscode gestarteten Aktivitäten wie folgt abzuschließen:
((Activity)getContext()).finishActivity(1);
In meinem Fall muss ich einen in einem Handler postDelayed verwenden. Auf diese Weise können Sie sicher sein, welche Aktivität Sie beenden. Ich hoffe es hilft!
Ich hatte das gleiche Problem beim Schließen einer Präferenzaktivität. Folgendes habe ich getan:
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();
}
}
Versuchen:
((Activity) context.getApplicationContext()).finish();