繁体   English   中英

如何从android返回堆栈中删除特定活动?

[英]How to remove a particular activity from android back stack?

在我的应用程序中,我有五个活动 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完全陌生。 我不知道如何实现这个流程。 我尝试了这个解决方案,但没有产生预期的结果 抱歉我的英语不好...

试试这个。

// 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) {
            Config.screenStack.remove(key);
            _activity.finish();
        }
    }
}

用户在 setContentView 之前添加活动以添加到堆栈中。

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

如果您想在从应用程序存在时完成所有活动,您可以看到此代码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM