快乐朴克倍投: Android 动态添加Fragment

主页 > 山东快乐扑克3 > 学习经验 > 学Java学Android经验 >

Android 动态添加Fragment

 山东快乐扑克3 www.rn5v7.cn 
1.fragment1布局及代码

布局

 


[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="//schemas.android.com/apk/res/android"  
  3.     xmlns:tools="//schemas.android.com/tools"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.   
  7.     tools:context=".Fragment1Activity">  
  8.   
  9.     <fragment  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="100dp"  
  12.         android:name="com.example.administrator.jreduch06.fragment.TopFragment"  
  13.         android:id="@+id/top_fragment"  
  14.         android:layout_alignParentTop="true"  
  15.         android:layout_alignParentEnd="true">  
  16.     </fragment>  
  17.     <fragment  
  18.         android:layout_width="match_parent"  
  19.         android:layout_height="300dp"  
  20.         android:id="@+id/leftfragment"  
  21.         android:name="com.example.administrator.jreduch06.fragment.LeftFragment"  
  22.         android:layout_below="@+id/top_fragment"  
  23.         android:layout_alignParentStart="true">  
  24.     </fragment>  
  25.     <FrameLayout  
  26.         android:layout_width="match_parent"  
  27.         android:layout_height="match_parent"  
  28.         android:id="@+id/fl"  
  29.         android:layout_alignParentStart="true"  
  30.         android:layout_below="@+id/leftfragment">  
  31.     </FrameLayout>  
  32. </RelativeLayout>  
代码


[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. package com.example.administrator.jreduch06;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v7.app.AppCompatActivity;  
  5. import android.support.v4.app.Fragment;  
  6. import com.example.administrator.jreduch06.fragment.FirstFragment;  
  7. import com.example.administrator.jreduch06.fragment.LeftFragment;  
  8. import com.example.administrator.jreduch06.fragment.SecondFragment;  
  9.   
  10. public class Fragment1Activity extends AppCompatActivity implements LeftFragment.Myinterface {  
  11.   
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.activity_fragment1);  
  16.     }  
  17.   
  18.     @Override  
  19.     public void onchangeFragment(int which) {  
  20.         if(which==1){  
  21.             Fragment fragment1=new FirstFragment();  
  22.             getSupportFragmentManager()  
  23.                     .beginTransaction()  
  24.                     .replace(R.id.fl, fragment1)  
  25.                     .commit();  
  26.   
  27.         }else if(which==2){  
  28.             Fragment fragment2=new SecondFragment();  
  29.             getSupportFragmentManager()  
  30.                     .beginTransaction()  
  31.                     .replace(R.id.fl,fragment2)  
  32.                     .commit();  
  33.         }  
  34.     }  
  35. }  
2.fragment2布局及代码
布局


[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="//schemas.android.com/apk/res/android"  
  3.     xmlns:tools="//schemas.android.com/tools"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     tools:context="com.example.administrator.jreduch06.Fragment2Activity">  
  7.   <fragment  
  8.       android:layout_width="match_parent"  
  9.       android:layout_height="wrap_content"  
  10.       android:id="@+id/one_fragment"  
  11.       android:name="com.example.administrator.jreduch06.fragmentcallback.OneFragment"  
  12.       >  
  13.   </fragment>  
  14.     <FrameLayout  
  15.         android:layout_width="match_parent"  
  16.         android:layout_height="match_parent"  
  17.         android:id="@+id/fl2"  
  18.         android:layout_below="@+id/linearlatout"  
  19.         >  
  20.     </FrameLayout>  
  21. </RelativeLayout>  
代码:

[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. package com.example.administrator.jreduch06;  
  2.   
  3. import android.support.v4.app.Fragment;  
  4. import android.support.v7.app.AppCompatActivity;  
  5. import android.os.Bundle;  
  6.   
  7. import com.example.administrator.jreduch06.fragment.FirstFragment;  
  8. import com.example.administrator.jreduch06.fragment.SecondFragment;  
  9. import com.example.administrator.jreduch06.fragmentcallback.OneFragment;  
  10.   
  11. public class Fragment2Activity extends AppCompatActivity  
  12.         implements OneFragment.OnFragmentInteractionListener{  
  13.   
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.activity_fragment2);  
  18.     }  
  19.   
  20.     @Override  
  21.     public void changeFragment(int which) {  
  22.         if(which==1){  
  23.             Fragment fragment1=new FirstFragment();  
  24.             getSupportFragmentManager()  
  25.                     .beginTransaction()  
  26.                     .replace(R.id.fl2, fragment1)  
  27.                     .commit();  
  28.   
  29.         }else if(which==2){  
  30.             Fragment fragment2=new SecondFragment();  
  31.             getSupportFragmentManager()  
  32.                     .beginTransaction()  
  33.                     .replace(R.id.fl2,fragment2)  
  34.                     .commit();  
  35.         }  
  36.     }  
  37. }  
3.FirstFragment代码及布局

 

布局:

 


[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. <FrameLayout xmlns:android="//schemas.android.com/apk/res/android"  
  2.     xmlns:tools="//schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context="com.example.administrator.jreduch06.fragment.FirstFragment">     
  6.     <TextView  
  7.         android:layout_width="match_parent"  
  8.         android:layout_height="match_parent"  
  9.         android:gravity="center"  
  10.         android:textSize="30sp"  
  11.         android:id="@+id/tv"  
  12.         android:text="我是Fragment1"  
  13.         android:layout_gravity="center_horizontal|bottom" />  
  14. </FrameLayout>  

 

代码:

 


[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. package com.example.administrator.jreduch06.fragment;  
  2. import android.os.Bundle;  
  3. import android.support.v4.app.Fragment;  
  4. import android.view.LayoutInflater;  
  5. import android.view.View;  
  6. import android.view.ViewGroup;  
  7.   
  8. import com.example.administrator.jreduch06.R;  
  9.   
  10. /**  
  11.  * A simple {@link Fragment} subclass.  
  12.  */  
  13. public class SecondFragment extends Fragment {  
  14.   
  15.     public SecondFragment() {  
  16.         // Required empty public constructor  
  17.     }  
  18.   
  19.    @Override  
  20.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  21.                              Bundle savedInstanceState) {  
  22.         // Inflate the layout for this fragment  
  23.         return inflater.inflate(R.layout.fragment_second, container, false);  
  24.     }  
  25. }  

 

4.SecondFragment代码及布局

 

布局:

 


[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. <FrameLayout xmlns:android="//schemas.android.com/apk/res/android"  
  2.     xmlns:tools="//schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context="com.example.administrator.jreduch06.fragment.SecondFragment">  
  6.     <TextView  
  7.         android:layout_width="match_parent"  
  8.         android:layout_height="match_parent"  
  9.         android:gravity="center"  
  10.         android:textSize="30sp"  
  11.         android:text="我是Fragment2" />  
  12. </FrameLayout>  

 

代码:

 


[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. package com.example.administrator.jreduch06.fragment;  
  2. import android.os.Bundle;  
  3. import android.support.v4.app.Fragment;  
  4. import android.view.LayoutInflater;  
  5. import android.view.View;  
  6. import android.view.ViewGroup;  
  7. import com.example.administrator.jreduch06.R;  
  8.   
  9. /**  
  10.  * A simple {@link Fragment} subclass.  
  11.  */  
  12. public class FirstFragment extends Fragment {  
  13.   
  14.     public SecondFragment() {  
  15.         // Required empty public constructor  
  16.     }  
  17.   
  18.    @Override  
  19.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  20.                              Bundle savedInstanceState) {  
  21.         // Inflate the layout for this fragment  
  22.         return inflater.inflate(R.layout.fragment_first, container, false);  
  23.     }  
  24. }  


5.LeftFragment布局及代码

布局:

 


[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"  
  2.     xmlns:tools="//schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical"  
  6.     android:background="#bece0d"  
  7.     tools:context="com.example.administrator.jreduch06.fragment.LeftFragment">  
  8.   
  9. <Button  
  10.     android:layout_width="match_parent"  
  11.     android:layout_height="wrap_content"  
  12.     android:text="第一个Fragment"  
  13.     android:id="@+id/bt1"  
  14.     />  
  15.     <Button  
  16.         android:layout_width="match_parent"  
  17.         android:layout_height="wrap_content"  
  18.         android:text="第二个Fragment"  
  19.         android:id="@+id/bt2"  
  20.         />  
  21.     <Button  
  22.         android:layout_width="match_parent"  
  23.         android:layout_height="wrap_content"  
  24.         android:text="callback1"  
  25.         android:id="@+id/bt3"  
  26.         />  
  27.     <Button  
  28.         android:layout_width="match_parent"  
  29.         android:layout_height="wrap_content"  
  30.         android:text="callback2"  
  31.         android:id="@+id/bt4"  
  32.         />  
  33.     <Button  
  34.         android:layout_width="match_parent"  
  35.         android:layout_height="wrap_content"  
  36.         android:text="隐藏"  
  37.         android:id="@+id/bt5"  
  38.         />  
  39.     <Button  
  40.         android:layout_width="match_parent"  
  41.         android:layout_height="wrap_content"  
  42.         android:text="显示"  
  43.         android:id="@+id/bt6"  
  44.         />  
  45. </LinearLayout>  
代码:

 

 


[html] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. package com.example.administrator.jreduch06.fragment;  
  2. import android.content.Context;  
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.support.v4.app.FragmentManager;  
  6. import android.support.v4.app.FragmentTransaction;  
  7. import android.view.LayoutInflater;  
  8. import android.view.View;  
  9. import android.view.ViewGroup;  
  10. import android.widget.Button;  
  11. import android.widget.Toast;  
  12. import com.example.administrator.jreduch06.R;  
  13.   
  14. /**  
  15.  * A simple {@link Fragment} subclass.  
  16.  */  
  17. public class LeftFragment extends Fragment {  
  18.     private Fragment fragment1;  
  19.     private Fragment fragment2;  
  20.   
  21.   private Myinterface myinterface ;  
  22.   
  23.     public LeftFragment() {  
  24.   
  25.     }  
  26.     @Override  
  27.     public void onAttach(Context context) {  
  28.         super.onAttach(context);  
  29.         if (context instanceof Myinterface) {  
  30.             myinterface= (Myinterface) context;  
  31.         } else {  
  32.             throw new RuntimeException(context.toString()  
  33.                     + " must implement OnFragmentInteractionListener");  
  34.         }  
  35.     }  
  36.   
  37.     @Override  
  38.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  39.                              Bundle savedInstanceState) {  
  40.   
  41.         View view=inflater.inflate(R.layout.fragment_left, container, false);  
  42.         Button bt1= (Button) view.findViewById(R.id.bt1);  
  43.         Button bt2= (Button) view.findViewById(R.id.bt2);  
  44.         Button bt3= (Button) view.findViewById(R.id.bt3);  
  45.         Button bt4= (Button) view.findViewById(R.id.bt4);  
  46.         Button bt5= (Button) view.findViewById(R.id.bt5);  
  47.         Button bt6= (Button) view.findViewById(R.id.bt6);  
  48.         bt1.setOnClickListener(new View.OnClickListener() {  
  49.             @Override  
  50.             public void onClick(View v) {  
  51.                 Toast.makeText(getContext(), "点击了按钮1", Toast.LENGTH_SHORT).show();  
  52.                  fragment1=new FirstFragment();  
  53.                 FragmentManager fm=getFragmentManager();  
  54.                 FragmentTransaction fr=fm.beginTransaction();  
  55.                 fr.replace(R.id.fl,fragment1);  
  56.                 fr.commit();  
  57.             }  
  58.         });  
  59.         bt2.setOnClickListener(new View.OnClickListener() {  
  60.             @Override  
  61.             public void onClick(View v) {  
  62.                  fragment2 = new SecondFragment();  
  63.                 FragmentManager fm = getFragmentManager();  
  64.                 FragmentTransaction fr = fm.beginTransaction();  
  65.                 fr.replace(R.id.fl, fragment2);  
  66.                 fr.commit();  
  67.             }  
  68.         });  
  69.         bt3.setOnClickListener(new View.OnClickListener() {  
  70.             @Override  
  71.             public void onClick(View v) {  
  72.                 myinterface.onchangeFragment(1);  
  73.             }  
  74.         });  
  75.         bt4.setOnClickListener(new View.OnClickListener() {  
  76.             @Override  
  77.             public void onClick(View v) {  
  78.                 myinterface.onchangeFragment(2);  
  79.             }  
  80.         });  
  81.         bt5.setOnClickListener(new View.OnClickListener() {  
  82.             @Override  
  83.             public void onClick(View v) {  
  84.                 if(fragment1!=null&& !fragment1.isHidden()){  
  85.                     getFragmentManager().beginTransaction()  
  86.                             .hide(fragment1).commit();  
  87.                 }  
  88.                 if(fragment2!=null&& !fragment2.isHidden()){  
  89.                     getFragmentManager().beginTransaction()  
  90.                             .hide(fragment2).commit();  
  91.                 }  
  92.             }  
  93.         });  
  94.        bt6.setOnClickListener(new View.OnClickListener() {  
  95.            @Override  
  96.            public void onClick(View v) {  
  97.                if(fragment1!=null&&fragment1.isHidden()){  
  98.                    getFragmentManager().beginTransaction()  
  99.                            .show(fragment1).commit();  
  100.                }  
  101.                if(fragment2!=null&& fragment2.isHidden()){  
  102.                    getFragmentManager().beginTransaction()  
  103.                            .hide(fragment2).commit();  
  104.                }  
  105.            }  
  106.        });  
  107.         return view;  
  108.     }  
  109.       
  110.     public  interface Myinterface {  
  111.   
  112.         void onchangeFragment(int which);  
  113.     }  
  114. }  
效果:

 

点击第一个按钮出现Fragment1.

点击第二个按钮出现Fragment2

点击第三个按钮出现Fragment1.(方法不同)

点击第四个按钮出现Fragment2.(方法不同)

点击隐藏,字条消失

点击显示,字条出现



上一篇:android 加载图片oom若干方案小结   下一篇: Android中常见的内存泄漏
536| 128| 669| 873| 84| 741| 297| 280| 762| 12|