从一个片段导航到另一个片段时,第二个片段重叠

时间:2020-10-27 11:38:32

标签: android android-fragments

单击按钮,我想从一个片段导航到另一个片段。问题是当我按下按钮时,第二个片段与另一个重叠。 我搜索了一些答案,但就我而言似乎没有措辞。我尝试添加background color,但仍然重叠。 因此,在单击按钮之后,将发生以下情况:A B

这是我的代码:

我给了第一个片段一个ID:

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.home.HomeFragment"
android:background="#FFF">

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="1dip"
    app:layout_constraintBottom_toTopOf="parent"
    android:background="#FFF"/>

按钮的ID为:nextFragment

第一个片段的类中的代码是:

        nextFragment = v.findViewById(R.id.nextFragment);
        nextFragment.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v){
            Fragment fragment = new NotificationsFragment();
            FragmentManager fragmentManager = getParentFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.fragment_container, fragment)
                    .addToBackStack(null)
                    .commit();
        }
    });

希望我提供了足够的信息,如果没有,请随时询问更多信息!预先感谢。

2 个答案:

答案 0 :(得分:0)

问题是您使用fragment_container作为第一个片段,而不是第一个片段的容器。

您必须在MainActivity中将第一个片段加载到该容器中。请勿将其用作片段。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if(savedInstanceState == null) {
        Fragment firstFragment = new YourFirstFragment();
        FragmentManager manager = getFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(R.id.fragment_container, firstFragment);
        transaction.commit();
    }
}

在那之后,在您的第一个片段中,当您替换该片段时,它将非常有用。

答案 1 :(得分:0)

所以解决方案很简单..我在第一个片段内的帧布局而不是根布局中给出了一个ID。 现在,下一件事是,按下按钮时,底部的选项卡也必须更改。