Подтвердить что ты не робот

Как использовать IntentCompat.makeRestartActivityTask()?

Я пытаюсь реализовать кнопку, которая приведет к тому, что мое приложение вернется к первому действию и будет действовать так, как если бы оно было (почти) перезапущено. Этот код

Intent newIntent =
        new Intent(currentActivity.getApplicationContext(), StartActivity.class);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK + Intent.FLAG_ACTIVITY_CLEAR_TASK);
currentActivity.startActivity(newIntent);

похоже, работает нормально для нового планшета с Android 4.1, но он не работает на более старом устройстве под управлением Android 2.3.4.

Я нашел пару потоков об этом:

Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK не работает Android

Удалить все действия в задаче?

Чтение мелкого шрифта приводит меня к мысли, что я должен использовать класс IntentCompat в android-support-v4.jar, http://developer.android.com/reference/android/support/v4/content/IntentCompat.html

К сожалению, документация не содержит примеров, и я очень не уверен, как я должен использовать IntentCompat. Единственный пример, который я нашел, это следующее: Не запускать MainActivity с Android 2.3

что заставляет меня думать, что я должен делать что-то вроде этого:

    Intent newIntent = IntentCompat.makeRestartActivityTask(cn);

Но это дает мне ошибку компилятора, говоря, что "makeRestartActivityTask" является символом undefined.

Я предполагаю, что это означает, что я не добавил поддержку android-support-v4.jar в мою среду сборки (выпуск сообщества IntelliJ IDEA 12), но я попытался сделать это несколькими различными способами, и он все еще не работает Не работай.

У меня есть два вопроса:

  • Я пытаюсь использовать IntentCompat правильно?

  • Как заставить компилятор перестать говорить, что "makeRestartActivityTask" является символом undefined?

4b9b3361

Ответ 1

Вот как я использую IntentCompat

    Intent intentToBeNewRoot = new Intent(this, MainActivity.class);
    ComponentName cn = intentToBeNewRoot.getComponent();

    Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);

    startActivity(mainIntent);

Это эффективно заменяет мой основной вопрос с отсутствием необходимости в MainActivity. Он работает в Gingerbeard и ICS. Я не видел, чтобы сообщение было undefined.

Ответ 2

Обновление

Google удалил метод IntentCompat.makeRestartActivityTask() в версиях текущей версии поддержки. Вместо этого вы можете просто использовать простой Android API:

ComponentName cn = intent.getComponent();
Intent.makeRestartActivityTask(cn);

Надеюсь, это может сэкономить время на поиск альтернатив;)