コード例 #1
0
 void ClearFragments()
 {
     //在foreach循环中修改元素会抛异常 所以必须用for循环 但正序for循环会导致只删除一般元素  所以这里必须用倒序循环
     for (int i = fragmentStack.Count - 1; i >= 0; i--)
     {
         Fragment fragment = fragmentStack[i];
         fragmentStack.RemoveAt(i);
         fragment.OnExitStack();
     }
 }
コード例 #2
0
 void ClearTopFragments(Fragment moveToTopFragment)
 {
     for (int i = fragmentStack.Count - 1; i >= 0; i--)
     {
         Fragment fragment = fragmentStack[i];
         if (!fragment.Equals(moveToTopFragment))
         {
             fragmentStack.RemoveAt(i);
             fragment.OnExitStack();
         }
         else
         {
             break;
         }
     }
 }
コード例 #3
0
 void FragmentExitStack(Fragment deleteFragment, bool isCallBack = true)
 {
     //从后面删 避免存在相同引用的fragment删除了前面的
     for (int i = fragmentStack.Count - 1; i >= 0; i--)
     {
         Fragment fragment = fragmentStack[i];
         if (fragment.Equals(deleteFragment))
         {
             fragmentStack.RemoveAt(i);
             if (isCallBack)
             {
                 fragment.OnExitStack();
             }
             break;
         }
     }
 }