如何从android后台堆栈中删除特定的活动?

时间:2016-07-12 10:45:31

标签: android android-activity flow

在我的申请中,我有五项活动a,b,c,d,e。用户按以下顺序转换.... 1. a - > b 2. b - > C 3. c - > d 4. d - > ë

直到活动'd',如果用户按下后退按钮,应用程序应该将用户重定向到之前的活动,如d - > c,c - > b等等......

但是当用户点击活动'd'中的保存按钮时,应用程序会将用户重定向到活动'e'。如果用户按下后退按钮然后我想将用户重定向到活动'a',这是家屏幕在我的应用程序中。

我是android的新手。我不知道如何实现这一流程。I tried this solution but it hasn't yielded desired result。抱歉我的英语不好......

2 个答案:

答案 0 :(得分: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);
}

如果您想在应用中存在所有活动,可以see this code.

答案 1 :(得分:1)

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");