Контекст активности андроидов

Если у меня есть ссылка на контекст, можно ли завершить текущую деятельность? У меня нет ссылки на текущую деятельность.

Ответы

Ответ 1

да, с актом:

((Activity) ctx).finish();

Ответ 2

В моем случае после работы

Мне нужно закончить свою деятельность в AsyncTask onPostExcute().

Где мой класс AsyncTask - это отдельный публичный класс, который имеет конструктор с параметром Context.

((Activity)(mContext)).finish();

Только это работало для меня... Во всяком случае, я получил эту идею от ответов @2red13 и @lucy... Спасибо всем...

Ответ 3

Я знаю это старое сообщение, но, возможно, было бы неплохо назвать это так:

if(context instanceof Activity){
                ((Activity)context).finish(); }

Таким образом, мы не получаем никаких ненужных ClassCastExceptions

Ответ 4

В последней версии Android я использовал finish();

Ответ 5

Если у вас есть доступ к запущенному представлению Activity, которое вы хотите завершить (например, вы находитесь в прослушивателе кликов), вы можете сделать:

((Activity)getContext()).finish();

(спасибо 2red13, чтобы получить меня здесь).

Ответ 6

Если вы запустите действие, используя:

startActivityForResult(i, 1);

вы можете вызвать finishActivity (1), чтобы завершить любые действия, запущенные с помощью этого кода запроса, например:

((Activity)getContext()).finishActivity(1);

В моем случае мне нужно использовать его в обработчике postDelayed. Используя это, вы можете быть уверены в том, какую деятельность вы заканчиваете. Надеюсь, это поможет!

Ответ 7

У меня была такая же проблема при закрытии активности предпочтений. Вот что я сделал:

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();
}
}

Ответ 8

Try:

((Activity) context.getApplicationContext()).finish();