Android Fragments 将现有片段置于前面

cxfofazt  于 9个月前  发布在  Android
关注(0)|答案(2)|浏览(72)

我有一个有n个按钮的应用程序。每个按钮创建一个新片段并将其附加到视图。因此,如果我按顺序触摸按钮A,B,C,则片段FA,FB和FC被创建和堆叠:
FA,FB,FC
现在,如果我再次按下A,则会创建一个新的片段并堆叠,因此堆栈变为:
FA,FB,FC -> FA,FB,FC,FA
有没有一种方法可以从堆栈中检索一个现有的片段(如果存在的话),并将其放在前面?所以如果我有一叠
FA,FB,FC
并再次按下“A”按钮,FA片段将从backstack中移除并置于前端:

  • FA*,FB,FC -> FB,FC,FA

如果我按下“C”,
FB,FC,FA -> FB,FA,FC
先谢了。

w1e3prcc

w1e3prcc1#

要实现这一点,您需要在放置Fragment的位置获取父View,或Fragment的根。一旦有了它,只需调用每个View都有的bringToFront()方法,然后将View移到前面。
您可以使用上下文的findViewById()方法获取ViewView的容器View

tvokkenx

tvokkenx2#

试试这个代码片段:

activity?.supportFragmentManager?.let { manager ->
        val fragmentTransaction = manager.beginTransaction()
        for (fragment in manager.fragments) {
            if (fragment is FragmentA) {
                fragmentTransaction.show(fragment)
            } else {
                fragmentTransaction.hide(fragment)
            }
        }
        fragmentTransaction.commit()
    }

相关问题