文章出處
文章列表
一、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的實例,然后去修改值就行了。
文章列表
全站熱搜