Как удалить конкретную активность из Android стека назад?

В моем заявлении у меня есть пять действий a, b, c, d, e. Пользователь проходит в следующей последовательности .... 1. a -> b 2. b -> c 3. c -> d 4. d -> e

до действия «d», если пользователь нажимает кнопку «назад», приложение должно перенаправить пользователя на предыдущее действие, например, d -> c, c -> b и т. д.

Но когда пользователь нажимает кнопку «Сохранить» в действии «d», приложение перенаправляет пользователя на действие «e». Теперь, если пользователь нажимает кнопку «Назад», я хочу перенаправить пользователя на действие «a», которое является домашним экраном в моем приложение.

Я совершенно новый для Android. Я не знаю, как добиться этого потока.Я пробовал это решение, но оно не дало желаемого результата, и извините за мой плохой английский ...

Ответы на вопрос(2)

Решение Вопроса

Попробуйте это в одном.

// Add activity
public static void addActivities(String actName, Activity _activity) {
    if (Config.screenStack == null)
        Config.screenStack = new HashMap<String, Activity>();
    if (_activity != null)
        Config.screenStack.put(actName, _activity);
}

// Remove Activity
public static void removeActivity(String key) {
    if (Config.screenStack != null && Config.screenStack.size() > 0) {
        Activity _activity = Config.screenStack.get(key);
        if (_activity != null) {
            _activity.finish();
        }
    }
}

Пользователь добавляет действия перед setContentView для добавления в стек.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addActivities("DemoActivity", DemoActivity.this)
    setContentView(R.layout.activity_create_feed_post);
}

Если вы хотите завершить все действия, когда вы существуете из приложения, вы можетеувидеть этот код

 Intimate13 июл. 2016 г., 07:43
Спасибо за решение. Ваше решение - это именно то, чего я хочу. Это даст мне контроль над задним стеком, как я хочу. но где я должен реализовать методы addActivities () и removeActivity (), чтобы я мог использовать их из любой деятельности? Пожалуйста, помогите мне ....
 Andy Developer13 июл. 2016 г., 07:47
Вы можете поместить оба этих файла в класс Utils, чтобы в своей деятельности вы могли использовать что-то подобное. Utils.addActivities («DemoActivity», DemoActivity.this); Спасибо...!
 Andy Developer13 июл. 2016 г., 09:52
Добро пожаловать, брат. :)
 Intimate13 июл. 2016 г., 09:50
Спасибо брат!!!! у меня это сработало .... но я немного отредактировал код ... я отправил в ответ .....
 Andy Developer13 июл. 2016 г., 07:59
Просто измените Utils.addActivities («имя действия», Activity.this); в соответствии с вашей деятельностью. Спасибо!
public class ActivityHandler{
private static HashMap<String, Activity> screenStack;

// Add activity
public static void addActivities(String actName, Activity _activity) {
    if (screenStack == null) {
        screenStack = new HashMap<String, Activity>();
    }

    if (_activity != null && !screenStack.containsKey(actName))
        screenStack.put(actName, _activity);
}

// Remove Activity
public static void removeActivity(String key) {
    if (screenStack != null && screenStack.size() > 0) {
        Activity _activity = screenStack.get(key);
        if (_activity != null && !_activity.isDestroyed() )
        {
            _activity.finish();
            screenStack.remove(key);
        }
    }
}}

чтобы добавить или удалить активность из стека .... Чтобы добавить активность ....ActivityHandler.addActivities("CheckoutActivity",CheckoutActivity.this);

Чтобы удалить активность ...ActivityHandler.removeActivity("CheckoutActivity");

Ваш ответ на вопрос