在Android应用程序中切换活动

时间:2018-03-13 03:34:34

标签: android android-activity

我有一个Android应用程序,我需要实现显示和隐藏功能。

假设我的第一个活动是活动A.这有一个显示按钮,它将打开活动B.活动B有一个'X'按钮,它将'最小化'这个活动并转到活动A.点击显示按钮将显示活动B.

在活动B中,我有一个列表视图。单击任何一个,将打开活动C.现在有另一个功能将隐藏活动C和B并显示活动A.如果我们点击显示按钮,它应该让用户到活动C维护堆栈,即C - &gt ; B - >甲

为了实现上述两个功能,我在隐藏期间完成了活动,并在展示期间再次创建。我不想这样做,因为当我再次展示活动时我想拥有以前的状态。

我在考虑以下内容:

  1. 要实现'X'功能,我会在隐藏时使用ActivityB.moveTaskToBack(),并在再次显示时使用以下代码:

    Intent i = new Intent(ActivityA.this, ActivityB.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i);

  2. 实现隐藏活动C和B并将其显示回来会产生一些问题。我可以在B和C上遵循上述方法吗?它会起作用吗?

  3. 有没有更好的解决方案来处理上述两个要求?

1 个答案:

答案 0 :(得分:3)

我建议在这种情况下使用Fragments专门为此目的指定

boolean visitedC;

在活动A onCreate

FragmentA a = new FragmentA();
fragmentTransaction.replace(a).addToBackStack("a").commit();
vistedC = false;

a - >点击显示

FragmentB b = fragmentManager.findFragmentByTag("b");
if(b == null)
b = new FragmentB();
fragmentTransaction.replace(b).addToBackStack("b").commit();

FragmentB oncreate

if(visitedC){
      FragmentC c = fragmentManager.findFragmentByTag("c");
      if(c == null)
      c = new FragmentC();
      fragmentTransaction.replace(c).addToBackStack("c").commit();
    }

b - >点击x

visitedC = false;
fragmentManager.popBackStack();

b - >点击列表项

FragmentC c = fragmentManager.findFragmentByTag("c");
if(c == null)
c = new FragmentC();
fragmentTransaction.replace(c).addToBackStack("c").commit();

c - >点击X

visitedC = true;
fragmentManager.popBackStackImmediate("a", 0);