文章出處

一、Fragment生命周期:

  

 

二、動態添加Fragment的三步:

1、獲得Fragment的管理者FragmentManager

FragmentManager fragmentManager = getFragmentManager();

2、開啟事務:

FragmentTransaction transaction = fragmentManager.beginTransaction();

3、提交事務:

transaction.commit();

 

下面是四個Fragment的切換:

 1     public void onClick(View view) {
 2         //獲得fragment的管理者
 3         android.app.FragmentManager fragmentManager = getFragmentManager();
 4         //開啟事物
 5         FragmentTransaction transaction = fragmentManager.beginTransaction();
 6         switch (view.getId()){
 7             case R.id.btn_wx:{//點擊類微信
 8                 transaction.replace(R.id.ll,new WxFragment());
 9             }break;
10             case R.id.btn_contact:{//點擊了聯系人
11                 transaction.replace(R.id.ll,new ContactFragment());
12             }break;
13             case R.id.btn_discover:{//點擊了發現
14                 transaction.replace(R.id.ll,new DiscoverFragment());
15             }break;
16             case R.id.btn_me:{//點擊了me
17                 transaction.replace(R.id.ll,new MeFragment());
18             }break;
19             default: break;
20         }
21         //最后一步,提交事物
22         transaction.commit();
23     }

 

以WxFragment為例:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        //通過打氣筒把一個布局轉換成一個view對象
        View view = inflater.inflate(R.layout.fragment_wx,null);
        return view;
    }

 

三、Fragment之間的通信:

已Fragment1修改Fragment2的TextView的值為例:

MainActivity:

1         android.app.FragmentManager fragmentManager = getFragmentManager();
2         FragmentTransaction transaction = fragmentManager.beginTransaction();
3 
4         transaction.replace(R.id.ll1,new Fragment1(),"f1");
5         transaction.replace(R.id.ll2,new Fragment2(),"f2");
6 
7         transaction.commit();  

Fragment1:

 1 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 2         View view = inflater.inflate(R.layout.fragment1,null);
 3         view.findViewById(R.id.bnt).setOnClickListener(new View.OnClickListener() {
 4             @Override
 5             public void onClick(View view) {
 6                 //修改TextView的值
 7                 Fragment2 f2 = (Fragment2)getActivity().getFragmentManager().findFragmentByTag("f2");
           //調Fragment2中的setText函數修改TextView的值
8 f2.setText("haha"); 9 } 10 }); 11 return view; 12 }

Fragment2:

1 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
2         View view = inflater.inflate(R.layout.fragment2,null);
3         tv = (TextView) view.findViewById(R.id.tv);
4         return view;
5     }
6     public void setText(String content){
7         tv.setText(content);
8     }

 

ps:通過Tag可以得到Fragment2的實例,然后去修改值就行了。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()