相关疑难解决方法(0)

使用片段清除堆栈

我将我的Android应用程序移植到了蜂窝状态,然后为了使用碎片我做了一个大的重构.在我之前的版本中,当我按下Home按钮时,我曾经做过一次ACTIVITY_CLEAR_TOP以重置后台堆栈.

现在我的应用程序只是一个包含多个片段的Activity,因此当我按下Home按钮时,我只需替换其中的一个片段.如何清除,而不必使用我的背部栈startActivityACTIVITY_CLEAR_TOP标志?

android android-fragments

231
推荐指数
9
解决办法
21万
查看次数

如何只保留第一个添加的片段在后栈(片段重叠)?

我想要实现的场景:

  1. 使用两个框架容器加载活动(有关项目列表和详细信息).
  2. 在应用启动时,在listFrame中添加listFragment,在detailsFrame容器中添加一些初始infoFragment.
  3. 浏览列表项而不将每个详细信息事务添加到后台堆栈(只想在堆栈中保留infoFragment).
  4. 一旦用户点击后退按钮(向后导航),他就会回退到初始信息片段,在发布时间添加内容.
  5. 如果顺序返回导航,则应用程序退出.

我的代码:

        protected override void OnCreate(Bundle savedInstanceState)
        {
...
            var listFrag = new ListFragment();
            var infoFrag = new InfoFragment();
            var trans = FragmentManager.BeginTransaction();
            trans.Add(Resource.Id.listFrame, listFrag);
            trans.Add(Resource.Id.detailsFrame, infoFrag);
            trans.Commit();
...
        }

        public void OnItemSelected(int id)
        {
            var detailsFrag = DetailFragment.NewInstance(id);
            var trans = FragmentManager.BeginTransaction();
            trans.Replace(Resource.Id.detailsFrame, detailsFrag);
            if (FragmentManager.BackStackEntryCount == 0)
                {
                    trans.AddToBackStack(null);
                }
            trans.Commit();
        }
Run Code Online (Sandbox Code Playgroud)

我的问题:

在按下后退按钮后,infoFrag与之前的detailFrag重叠!为什么?

android

9
推荐指数
3
解决办法
2万
查看次数

Android动画嵌套片段

我有一个活动,里面有一个片段A. 片段A在其内部嵌套了片段B. 我使用以下代码用C切换B:

            getChildFragmentManager()
                .beginTransaction()
                .setCustomAnimations(R.anim.move_left_in, R.anim.move_left_out,R.anim.move_right_in, R.anim.move_right_out)
                .replace(R.id.container, fragmentC)
                .addToBackStack("nested")
                .commit();
Run Code Online (Sandbox Code Playgroud)

之后,我正在做

        getChildFragmentManager().popBackStack();
Run Code Online (Sandbox Code Playgroud)

什么让我回到片段B.然后我用代码切换片段A和片段D.

        getSupportFragmentManager()
            .beginTransaction()
            .setCustomAnimations(R.anim.move_up_in, R.anim.move_up_out, R.anim.move_down_in, R.anim.move_down_out)
            .replace(R.id.fragment_holder, fragmentD)
            .addToBackStack("fragments")
            .commit();
Run Code Online (Sandbox Code Playgroud)

当A-> D交易上的动画正在播放时,B播放事务C-> B的动画,并通过弹出backstack获得相同的结果,为什么?

animation android fragment android-nested-fragment

5
推荐指数
1
解决办法
700
查看次数