2014-10-04 45 views
0

我希望有两个.xml Fragment的布局文件有条件地我想启动一个并在某些事件上更改为其他,尝试搜索Javadoc以查找相关方法,任何指针都会有帮助如何以编程方式添加和删除片段中的视图

+0

使用ViewAnimator或直接致电ViewGroup.addView *()/ ViewGroup.removeView [在]() – pskink 2014-10-04 05:16:46

+0

@pskink大谢谢我一直在寻找这一点,但是当我尝试删除MapView保持灰色方块,并且可以将它删除,任何想法如何刷新视图 – user3833308 2014-10-04 05:29:21

+0

您使用ViewAnimator或直接添加/删除视图?另外如果你在模拟器上运行它,请尝试hierarchyviewer – pskink 2014-10-04 05:59:33

回答

2

您需要创建两个类extends Fragment类和override onCreateView()方法并扩大您的布局。例如:

FragmentOne.java

public class FragmentOne extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, 
     ViewGroup container, Bundle savedInstanceState) { 

     //Inflate the layout for this fragment 

     return inflater.inflate(
       R.layout.fragment_one, container, false); 


     } 
    } 

FragmentTwo.java

public class FragmentTwo extends Fragment{ 
@Override 
public View onCreateView(LayoutInflater inflater, 
    ViewGroup container, Bundle savedInstanceState) { 

    // Inflate the layout for this fragment 

    return inflater.inflate(
      R.layout.fragment_two, container, false); 


} 
} 

而在你MainActivity.java

Fragment fr; 

     if(view == findViewById(R.id.button2)) { 
      fr = new FragmentTwo(); 

     }else { 
      fr = new FragmentOne(); 
     } 

     FragmentManager fm = getFragmentManager(); 
     FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
     fragmentTransaction.replace(R.id.fragment_place, fr); 
     fragmentTransaction.commit(); 
+0

我可以在创建后更改它吗? – user3833308 2014-10-04 04:53:19

+0

是的,你可以在你需要实现的地方添加MainActivity代码。 – 2014-10-04 04:58:12

+0

谢谢你,我使用swipable视图http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/我想要的是第一个标签我想有3步过程和第二个选项卡应该是少一步,我看到你把片段放入MainACtivity的重点,但我不知道如何将它集成在此示例中 – user3833308 2014-10-04 05:15:20

0

试试这个..

public class FragmentCont extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, 
    ViewGroup container, Bundle savedInstanceState) { 

    //Inflate the layout for this fragment 
    if(condition1){ 
    return inflater.inflate(
      R.layout.fragment_one, container, false); 
    }else{ 
    return inflater.inflate(
      R.layout.fragment_two, container, false); 
    } 


    } 
} 
+0

可以在创建后更改它吗? – user3833308 2014-10-04 04:54:25

+0

创建后,你必须改变它的活动。在活动中有一个框架布局,并使用片段管理器替换它在这里完成http://stackoverflow.com/questions/7849490/android-adding-fragments-dynamically – Panther 2014-10-04 04:59:17

相关问题