大家好朋友我在movies.xml中有两个framelayout,即容器, detail_screen 。容器中将添加 movies.xml ,其中包含listview,并且在detail_screen中将有可扩展的列表视图,名为 movie_details.xml 。现在想以编程方式检查detail_screen已经是片段呈现或未呈现。如果只是想删除该片段。我通过follwing做了它的工作正常。
if (getSupportFragmentManager().findFragmentByTag("MyFragment") != null) {
getSupportFragmentManager().beginTransaction().remove(getSupportFragmentManager().findFragmentByTag("MyFragment")).commit();
}
但是有没有其他方法可以通过编程方式找到是否在android中的帧布局中呈现片段。提前感谢
答案 0 :(得分:11)
我创建了解决方案如下。在将任何片段添加到details_screen之前,只需检查是否已呈现片段然后弹出它然后将添加新片段。
if (getSupportFragmentManager().findFragmentById(R.id.detail_screen) != null) {
getSupportFragmentManager().popBackStack();
} //to do add fragment
希望它能奏效。
答案 1 :(得分:8)
您 使用findFragmentByTag()
或findFragmentById()
方法来查找它。如果返回的实例不为null,则存在片段。此外,您可以使用Fragment.isInLayout()
方法检查片段是使用<fragment>
标记在布局中定义还是以编程方式添加。