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.
android
android-activity
android-context
Buda Gavril
quelle
quelle
Antworten:
ja, mit einer Besetzung:
((Activity) ctx).finish();
quelle
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 ...
quelle
((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
quelle
Wenn Sie Zugriff auf die laufende Ansicht der Aktivität haben, die Sie beenden möchten (z. B. befinden Sie sich in einem Klick-Listener), können Sie Folgendes tun:
((Activity)getContext()).finish();
(Danke an 2red13, um mich hierher zu bringen).
quelle
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!
quelle
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(); } }
quelle
Versuchen:
((Activity) context.getApplicationContext()).finish();
quelle