我有一个Android应用程序,我需要实现显示和隐藏功能。
假设我的第一个活动是活动A.这有一个显示按钮,它将打开活动B.活动B有一个'X'按钮,它将'最小化'这个活动并转到活动A.点击显示按钮将显示活动B.
在活动B中,我有一个列表视图。单击任何一个,将打开活动C.现在有另一个功能将隐藏活动C和B并显示活动A.如果我们点击显示按钮,它应该让用户到活动C维护堆栈,即C - &gt ; B - >甲
为了实现上述两个功能,我在隐藏期间完成了活动,并在展示期间再次创建。我不想这样做,因为当我再次展示活动时我想拥有以前的状态。
我在考虑以下内容:
要实现'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);
实现隐藏活动C和B并将其显示回来会产生一些问题。我可以在B和C上遵循上述方法吗?它会起作用吗?
有没有更好的解决方案来处理上述两个要求?
答案 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);