2015-10-06 97 views
0

我知道这个问题已经被其他线程问过像这样的: 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

replace()方法中的id是容器ID,而不是您的片段ID。所以它会是你的活动中显示片段的布局的id。所以你做对了。但有一点需要注意的是,您无需致电remove()。您可以拨打replace()FragmentManager会自动为您拨打remove()

相关问题