通过关闭所有堆叠的活动来启动新活动

时间:2017-10-22 08:05:13

标签: java android android-activity

我的活动堆栈:

Main -> Restaurant Menu -> Order Details.

下订单时,我需要关闭餐厅菜单和订单详情 并启动名为Active Order的新活动

Main -> Active Order.  (need to close top 2 activity)

我尝试过以下所有选项

    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |  Intent.FLAG_ACTIVITY_SINGLE_TOP);

我发现的所有解决方案都表现如下

  1. 主要 - >餐厅菜单 - >活跃订单。 (关闭订单详情)
  2. 仅限活动订单。 (关闭所有内容并重新开始)
  3. 我怎样才能做到这一点。 主要 - >活跃订单。 ?

    感谢。

5 个答案:

答案 0 :(得分:0)

我可以使用的想法是每次新意图开始时设置SharedFile,并且在您使用startActivity();之后,我会在finish();之后关闭当前活动,然后再打开新的之一。

答案 1 :(得分:0)

我曾经使用过像..

    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    this.startActivity(intent);
    this.finish();

答案 2 :(得分:0)

您可以启动类似的活动:

 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  

这是一个最小的示例,您可以在Android中创建Intent并启动Activity。

Intent intent = new Intent(this,Home.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

答案 3 :(得分:0)

 Intent i = new Intent(getActivity(), ActiveOrder.class);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(i);

答案 4 :(得分:0)

试试这种方式

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

根据意图的Android Developers resource

  • FLAG_ACTIVITY_CLEAR_TASK:如果设置在传递给Intent的{​​{1}}中,则此标志将导致在活动开始之前清除与活动关联的任何现有任务。 / LI>
  • Context.startActivity():如果设置,此活动将成为此历史记录堆栈上新任务的开始。

致电FLAG_ACTIVITY_NEW_TASK之后,请将此行放在更准确的位置:

startActivity(intent)