【问题标题】:How to change the current fragment view with other fragment如何使用其他片段更改当前片段视图
【发布时间】:2016-03-26 19:00:27
【问题描述】:

如何用其他片段改变片段的整体视图!!

或者如何用另一个fragment关闭当前fragment,也请用布局说明

提前谢谢...

【问题讨论】:

  • 先谷歌一下,有n个教程。
  • 我投票决定将此问题作为离题结束,因为 OP 甚至懒得对 Google 进行最少的研究。

标签: android android-fragments


【解决方案1】:

您可以在活动中添加或替换片段。在活动的布局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

或者查看我对类似问题的回答:

How to start Fragment from an Activity

【讨论】:

    【解决方案2】:
    getSupportFragmentManager().beginTransaction().replace(R.id.fragmentlayout,new fragment()).commit()
    

    这将帮助您用new fragment() 替换id FragmentLayout 视图中的现有片段。

    谢谢,希望对你有帮助。

    【讨论】:

      【解决方案3】:

      首先,您在您的 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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多