我知道之前在其他线程中已经问过这个问题,比如这个: Trying to replace one fragment with another
但是,在这些情况下,布局文件将具有带有id的节点。在我的例子中,我创建了一个自定义的SettingsFragment,这个SettingsFragment包含许多项目。当我点击一个项目时,它将启动另一个片段CreatePasswordFragment。
现在,我的SettingsFragment没有id(或者它是吗?我是android的新手......),所以我不知道如何使用.replace(R.id.fragment_container,CreatePasswordFragment.newInstance())
到目前为止,我已经使用了以下方法,虽然它有效但我想知道是否有更好的方法可以做到这一点?
getActivity()
.getSupportFragmentManager()
.beginTransaction()
.remove(SettingsFragment.this)
.replace((android.R.id.content, CreatePasswordFragment.newInstance(userProfile.email))
.addToBackStack(null)
.commit();
答案 0 :(得分:0)
replace()
方法中的ID是容器ID,而不是您的片段ID。因此,活动中显示片段的任何布局都是id。所以你做得对。但是,需要注意的一点是,您无需致电remove()
。您只需拨打replace()
,FragmentManager
就会自动为您拨打remove()
。