从另一个活动的堆栈中清除活动

时间:2018-06-22 10:17:54

标签: android android-activity stack

我有开始屏幕,这是我在应用程序中的第一个活动。

此活动仅包含一个按钮,当单击它时,它应导航到另一个活动,该活动将提示用户输入名称。

如果用户在确认名称之前按返回按钮,则应导航回上一个活动。

但是,当用户确认名称时,应弹出主要活动,并从应用程序中删除已放弃的活动。

我一直在寻找解决方案,并在创建静态活动对象时找到了它,但是我发现它不明智,并且对内存不利。

做我解释过的最好方法是什么?

3 个答案:

答案 0 :(得分:0)

您好,一次检查可能会很有帮助...

在“ UserNameActivity”中实现此操作

@Override
public void onBackPressed() {

    if (name.isconfirmed())
    {
        Intent intent=new Intent(this,MainActivity.class);
        startActivity(intent);
        finish();
    }
    else
    {
        super.onBackPressed();
    }

}

答案 1 :(得分:0)

尝试:

实施该代码以清除其他堆栈活动

Intent intent = new Intent(this, newActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
this.startActivity(intent);

我希望这对您有帮助

答案 2 :(得分:0)

第一个Activity应该使用Activity调用第二个startActivityForResult()。首先在Activity中实现onActivityResult(),如下所示:

  • 如果resultCodeRESULT_CANCELED,则用户单击了BACK键,因此您无需执行任何操作

  • 如果resultCodeRESULT_OK,则用户输入了他的用户名,您就可以启动主Activity并呼叫finish()。这将从堆栈中删除第一个Activity

当用户确认其用户名后,第二个Activity应该呼叫setResult(RESULT_OK),然后呼叫finish()。这将结束第二个Activity,并通过调用Activity返回第一个onActivityResult()

注意: 第二个Activity可以将数据(例如输入的用户名或其他内容)返回给第一个Activity,作为传递给Intent的{​​{1}}中的“扩展名”。