android - 从一个片段导航到另一个片段时,第二个片段重叠
问题描述
单击一个按钮,我想从一个片段导航到另一个片段。问题是当我按下按钮时,第二个片段与另一个片段重叠。我搜索了一些答案,但在我的情况下似乎没有。我尝试添加背景颜色,但它仍然重叠。所以在我点击按钮后,会发生以下事情:
这是我的代码:
我给第一个片段一个 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();
}
});
希望我提供了足够的信息,如果不是,请不要犹豫,要求更多!提前致谢。
解决方案
问题是您将其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();
}
}
之后,在您的第一个片段中,当您替换片段时,它会很好地工作。
推荐阅读
- javascript - JQuery Dialog - 未保存更改时离开页面
- javascript - PhantomJS 获取特定元素的位置数组
- unit-testing - EJS:测试包含的 ejs 文件
- javascript - SVG - 获取 SVG 中鼠标/触摸鼠标/单击/点击下出现的 ID 的有序列表
- javascript - 如何设置接受 RTMP 和/或 RTSP 流并使用 WebRTC 流式传输到客户端(浏览器)的直播 Node js 服务器?
- javascript - FCC Basic JavaScript:测试对象的属性
- anylogic - If-Else 功能在设置条件为真时将托盘存储到三个托盘架之一
- python - Selenium Python 脚本打印错误
- django - django rest框架传递标头的问题
- python - MPI Python输入函数,我的代码有问题