在底部导航视图中的后堆栈时片段重叠

时间:2019-03-09 02:25:59

标签: android android-fragments

我有一个主要活动,该活动实现了底部导航视图,上面有5个片段。例如,当我按第一个片段中的搜索按钮,然后显示片段搜索时。但是,当我转到另一个底部导航视图(片段c)并按回电话时,会导致片段A和片段C之间重叠。

这是片段A和片段搜索之间的代码

 FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    searchHerbs searchHerbs = new searchHerbs();
    searchHerbs.setArguments(arguments);
    ft.replace(R.id.main_frame, searchHerbs);
    ft.addToBackStack(null);
    ft.commit();

这是底部导航视图片段之间的片段事务代码

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.main_frame,fragment);
    fragmentTransaction.commit();

如果我跟踪代码。问题是 : 1.当我离开片段搜索时,没有addbackstack,我想在onDestroyView中添加它,但我不知道如何。 2.我使用addbackstack(null)从片段A进行片段搜索。 3.当我从底部导航视图中按另一个片段(片段c)并按回时。它会导致弹出片段碎片A。

我已经尝试在底部导航视图的片段事务中添加addbackstack(null)。问题已解决,但又产生了另一个问题,例如: 1.在我关闭应用程序之前按堆栈时,它会导致空白片段。 2.即使片段已更改,当我按回时,活动的底部导航也不会更改。

overlapping fragment image

1 个答案:

答案 0 :(得分:0)

我知道一个技巧,但是它正在进行中。在新的Fragment中,将根布局背景设为白色,并使其可点击,就像

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                     xmlns:app="http://schemas.android.com/apk/res-auto"
                     xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_margin="5dp"
                     android:padding="5dp"
                     android:background="@color/white"
                     android:clickable="true"
                     app:cardCornerRadius="10dp"
                     app:contentPadding="5dp">