如何使用其他片段更改当前片段视图

时间:2016-03-26 10:29:55

标签: android android-fragments

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

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

提前致谢...

3 个答案:

答案 0 :(得分:0)

{% extends 'path_to_base_html/base.html' %}
{% block content %}
Child html
{% endblock %}

这将帮助您使用getSupportFragmentManager().beginTransaction().replace(R.id.fragmentlayout,new fragment()).commit() 替换ID为FragmentLayout的视图中的现有片段。

谢谢你,我希望这很有帮助。

答案 1 :(得分:0)

您可以在活动中添加或替换片段。在活动的布局FrameLayout文件中创建xml

然后在您的活动中执行此操作以替换片段。每次要将一个片段替换为其他片段时,可以使用相同的代码。

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();

当你想用anu其他片段替换添加的frogment时,你必须先删除以前的片段(或者你可以隐藏以前的片段;取决于你的要求)。请参阅以下代码:

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 :(得分:0)

首先,在您添加片段的活动中选择一个Framelayout。

FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.framelayout,fragment_1);
transaction.addToBackStack(null);
transaction.commit();

当你用你编写的第二个片段替换第一个片段时,只需将fragment_1更改为fragment_2

FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.framelayout,fragment_2);
transaction.addToBackStack(null);
transaction.commit();