fragment碎片

一、布局

fragment碎片

1、activity_main


<RelativeLayout 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"
    tools:context=".MainActivity" >


    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >


        <Button
            android:id="@+id/wx"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="微信" />
           <Button
            android:id="@+id/contacts"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="通讯录" />
              <Button
            android:id="@+id/wxdiscover"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="发现" />
                 <Button
            android:id="@+id/me"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="我" />
    </LinearLayout>
</RelativeLayout>


二、代码

public class MainActivity extends FragmentActivity implements OnClickListener {
private Button btnContacts;
private Button btnMe;
private Button btnWx;
private Button btnDiscover;
private LinearLayout ll;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}


private void initData() {
btnWx.setOnClickListener(this);
btnContacts.setOnClickListener(this);
btnDiscover.setOnClickListener(this);
btnMe.setOnClickListener(this);
}


private void initView() {
btnContacts = (Button) findViewById(R.id.contacts);
btnMe = (Button) findViewById(R.id.me);
btnWx = (Button) findViewById(R.id.wx);
btnDiscover = (Button) findViewById(R.id.wxdiscover);
ll = (LinearLayout) findViewById(R.id.ll);

}


@Override
public void onClick(View v) {
FragmentManager manager = getSupportFragmentManager();//得到FragmentManager()
FragmentTransaction transaction = manager.beginTransaction();//开启事务
switch (v.getId()) {
case R.id.wx:
transaction.replace(R.id.ll,new WxFragment());//ll代表要替换的所在位置的id
break;
case R.id.me:
transaction.replace(R.id.ll,new MeFragment());
break;
case R.id.contacts:
transaction.replace(R.id.ll,new ContactsFragment());
break;
case R.id.wxdiscover:
transaction.replace(R.id.ll,new WxFragment());
break;
default:
break;
}
transaction.commit();//提交
}
}

2、 ContactsFragment 类,其他几个相似

public class ContactsFragment extends Fragment {


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.contacts_fragment, null);
return view;
}
}

三、效果图

fragment碎片


补充:FragmentTransaction 中提供了一个 addToBackStac k ( ) 方法 ,可以用于将二个 事务添加到返回战中,修改 MainActivity    中的代码,当用这个方法当打开多个碎片是会一一退出。

public void onClick(View v) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
switch (v.getId()) {
case R.id.wx:
transaction.replace(R.id.ll,new WxFragment());
transaction.addToBackStack(null);
break;
case R.id.me:
transaction.replace(R.id.ll,new MeFragment());
transaction.addToBackStack(null);
break;
case R.id.contacts:
transaction.replace(R.id.ll,new ContactsFragment());
transaction.addToBackStack(null);
break;
case R.id.wxdiscover:
transaction.replace(R.id.ll,new WxFragment());
transaction.addToBackStack(null);
break;
default:
break;
}
transaction.commit();
}

更改后的效果:

fragment碎片

fragment碎片