这只是一个很简单的例子,fragment里面只写了简单区分的内容。并且这里只写到了动态添加fragment,因为动态添加使用情况要比较多。
关于Fragment的介绍这里不做过多说明,详情请看鸿洋大神的解说,其实他详细的写了fragment的使用。我这里只是自己练习,然后自己记录一下fragment的这个使用而已。
先看效果图
代码
MainActivity的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:id="@+id/main_linear" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="7" android:background="#ff44ff" android:orientation="horizontal"></LinearLayout> <RadioGroup android:id="@+id/main_radiogroup" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> <RadioButton android:id="@+id/main_rab_house" android:checked="true" android:text="主页" style="@style/main_rbt" android:drawableTop="@drawable/select_house"/> <RadioButton android:id="@+id/main_rab_mine" style="@style/main_rbt" android:text="我的" android:drawableTop="@drawable/select_mine" /> <RadioButton android:id="@+id/main_rab_certific" style="@style/main_rbt" android:text="认证" android:drawableTop="@drawable/select_certification"/> </RadioGroup> </LinearLayout>
这里因为RadioButton的一些属性都相同,所以用style写了一下,在values文件夹里的style里面自己写一个
<style name="main_rbt"> <item name="android:layout_width">0dp</item> <item name="android:layout_weight">1</item> <item name="android:layout_height">wrap_content</item> <item name="android:button">@null</item> <item name="android:layout_gravity">center_vertical</item> <item name="android:gravity">center_horizontal</item> </style>
下面的这些Fragment都是一样的,请忽略,只是告诉大家,
主页面Fragment的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是主页界面的Fragment啦啦啦"/> <ImageView android:layout_marginTop="12dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher"/> </LinearLayout>
主页面Fragment
import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.lvyequeen.mystudysummry.R; /** * author: lvqueen * mailbox: lvyequeen@163.com * time: 15/12/18 10:02 */ public class HousFragement extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment_house,null); return view; } }
我的页面Fragment的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是我的我的界面的Fragment哦"/> <ImageView android:layout_marginTop="12dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher"/> </LinearLayout>我的页面Fragment
import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.lvyequeen.mystudysummry.R; /** * author: lvqueen * mailbox: lvyequeen@163.com * time: 15/12/18 10:04 */ public class MineFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment_mine,null); return view; } }
认证页面Fragment的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是认证界面的Fragment哦哦"/> <ImageView android:layout_marginTop="12dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher"/> </LinearLayout>认证页面Fragment
import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.lvyequeen.mystudysummry.R; /** * author: lvqueen * mailbox: lvyequeen@163.com * time: 15/12/18 10:06 */ public class CertificFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment_certific,null); return view; } }
MainActivity里面的内容
import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.widget.RadioGroup; import com.lvyequeen.mystudysummry.R; import com.lvyequeen.mystudysummry.fragments.CertificFragment; import com.lvyequeen.mystudysummry.fragments.HousFragement; import com.lvyequeen.mystudysummry.fragments.MineFragment; public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener { private HousFragement housFragement; private MineFragment mineFragment; private CertificFragment certificFragment; private RadioGroup main_radiogroup; private FragmentTransaction transaction; private FragmentManager manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFragment(); initView(); } /** * 初始化MainActivity视图 */ private void initView() { main_radiogroup = (RadioGroup) findViewById(R.id.main_radiogroup); main_radiogroup.setOnCheckedChangeListener(this); } /** * 初始化所有要加载的Fragment */ private void initFragment() { housFragement = new HousFragement(); mineFragment = new MineFragment(); certificFragment = new CertificFragment(); setDefaultFragment(); } /** * 设置默认的fragment */ private void setDefaultFragment() { manager = getSupportFragmentManager(); transaction = manager.beginTransaction(); transaction.replace(R.id.main_linear, housFragement); transaction.commit(); } /** * 点击下面一排RadioButton切换fragment * @param fragment */ private void replaceFragment(Fragment fragment){ FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.main_linear,fragment); transaction.commit(); } /** * RadioGroup的监听 * @param group * @param checkedId */ @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.main_rab_house: replaceFragment(housFragement); break; case R.id.main_rab_mine: replaceFragment(mineFragment); break; case R.id.main_rab_certific: replaceFragment(certificFragment); break; } } }