【问题标题】:Clear activity from stack from another activity从另一个活动的堆栈中清除活动
【发布时间】:2018-12-01 19:18:01
【问题描述】:

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

这个活动只包含一个按钮,当它被点击时,它应该导航到另一个应该提示用户输入名字的活动。

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

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

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

按照我的解释,最好的方法是什么?

【问题讨论】:

标签: android android-activity stack


【解决方案1】:

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

在您的“UserNameActivity”中实现这一点

@Override
public void onBackPressed() {

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

}

【讨论】:

    【解决方案2】:

    试试这个:

    实现此代码在哪个活动处清除其他堆栈活动

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

    希望对你有帮助

    【讨论】:

    • 实施后,在确认名称后,我会在 mainActivity 加载前获得 1 秒钟的白色屏幕。
    • 请在后台进程中运行,使用清除堆栈活动的目的-这取决于它是如何完成的
    【解决方案3】:

    第一个Activity 应该使用startActivityForResult() 调用第二个Activity。在第一个Activity 实现onActivityResult() 如下:

    • 如果resultCode 是RESULT_CANCELED,那么用户已经点击了返回键,所以你不需要做任何事情

    • 如果resultCode 是RESULT_OK,那么用户输入了他的用户名,您可以启动主Activity 并调用finish()。这将从堆栈中删除第一个 Activity。

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

    注意: 第二个Activity 可以将数据(如输入的用户名或其他)作为Intent 中的“附加”返回给第一个Activity,并传递给setResult()。

    【讨论】:

      猜你喜欢
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2012-04-20
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多