单击按钮,我想从一个片段导航到另一个片段。问题是当我按下按钮时,第二个片段与另一个重叠。 我搜索了一些答案,但就我而言似乎没有措辞。我尝试添加background color,但仍然重叠。 因此,在单击按钮之后,将发生以下情况:
这是我的代码:
我给了第一个片段一个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();
}
});
希望我提供了足够的信息,如果没有,请随时询问更多信息!预先感谢。
答案 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。 现在,下一件事是,按下按钮时,底部的选项卡也必须更改。