2014-10-04 41 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

相關問題