【发布时间】:2016-03-26 19:00:27
【问题描述】:
如何用其他片段改变片段的整体视图!!
或者如何用另一个fragment关闭当前fragment,也请用布局说明
提前谢谢...
【问题讨论】:
-
先谷歌一下,有n个教程。
-
我投票决定将此问题作为离题结束,因为 OP 甚至懒得对 Google 进行最少的研究。
如何用其他片段改变片段的整体视图!!
或者如何用另一个fragment关闭当前fragment,也请用布局说明
提前谢谢...
【问题讨论】:
您可以在活动中添加或替换片段。在活动的布局xml 文件中创建一个FrameLayout。
然后在您的活动中执行此操作以替换片段。每次您想用另一个片段替换一个片段时,都可以使用相同的代码。
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG);
transaction.addToBackStack(null);
transaction.commit();
如果您想添加片段而不是替换,请执行以下操作:
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG);
transaction.addToBackStack(null);
transaction.commit();
当您想用其他片段替换添加的青蛙时,您必须先删除之前的片段(或者您可以隐藏之前的片段;取决于您的要求)。见以下代码:
Fragment fragment = getSupportFragmentManager().findFragmentByTag(YOUR_FRAGMENT_STRING_TAG);
if(fragment != null)
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
请参阅以下有关 SO 的相关问题:
Difference between add(), replace(), and addToBackStack()
Basic difference between add() and replace() method of Fragment
Difference between add() & replace() with Fragment's lifecycle
或者查看我对类似问题的回答:
【讨论】:
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentlayout,new fragment()).commit()
这将帮助您用new fragment() 替换id FragmentLayout 视图中的现有片段。
谢谢,希望对你有帮助。
【讨论】:
首先,您在您的 Activity 中使用一个 Framelayout 来添加片段。
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.framelayout,fragment_1);
transaction.addToBackStack(null);
transaction.commit();
当您将第一个片段替换为您编写的第二个片段时,只需将片段_1 更改为片段_2
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.framelayout,fragment_2);
transaction.addToBackStack(null);
transaction.commit();
【讨论】: