如何确保每个活动一次只能有1个“子活动”

时间:2018-01-06 21:25:48

标签: android android-intent

我想做什么:

1)防止活动创建相同类型的重复子活动
   (例如Activity A如果用户快速点击Activity B则会开始2 "start B"

2)防止活动一次创建多于1个活动
   (例如Activity A如果用户点击Activity B后快速Activity C,则会启动1x "start B"和1x "start C"

我现在有什么:

(活动A)可以开始(活动B)和(活动C) (活动B)可以开始(活动D) (活动C)什么都不开始。
(活动D)可以什么也不开始。

每个活动都有1个按钮,可以启动每个活动。例如(活动A)有2个按钮。

每个按钮都附加到事件监听器,如下所示

buttonStartB.setOnClickListener(new View.OnClickListener()
{
     Intent myIntent = new Intent(ActivityA.this, ActivityB.class);
     myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // to achieve property (1)
     startActivityForResult(myIntent, SOME_CONSTANT_REQUEST_CODE_VALUE);

     // don't know how to achieve property (2)???
});

enter image description here

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我们会在下一个Activity启动之前讨论一些问题。所以我会使用以下两个选项之一:

选项1 : 禁用您不希望接受进一步输入的所有UI元素(例如Button)。在一定延迟后重新启用它们,例如使用Handler#postDelayed()

这种方法的问题在于按钮从“启用”闪烁到“禁用”并且返回可能看起来很糟糕。因此,不是禁用UI元素,而是......

选项2 :使用boolean enabled = true;并在点击第一个Button后切换它。检查onClick()中的值,仅处理点击enabled == true。使用上述true将值重置为Handler