一,首先写一个类继承fragment
package com.example.pateo.boke; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * Created by pateo on 18-4-9. */ public class FirstFragment extends Fragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //引用创建好的布局 View view = inflater.inflate(R.layout.fragment_first,container,false); return view; } }
二,activity中的代码
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.view.View; import butterknife.ButterKnife; import butterknife.OnClick; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick({R.id.bt_first, R.id.bt_second}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.bt_first: //获取fragmentmanager,在v4包中getsupportfragmentmanager, //在系统中原生fragment是通过 getFragmentManager 获得的 FragmentManager fragmentManager = getSupportFragmentManager(); //2.开启一个事务,通过begintransaction方法开启 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 创建fragment对象 FirstFragment firstFragment = new FirstFragment(); //向容器内加入fragment, 一般用add 或者replace方法,传入容器的id,或者是fragment实例 fragmentTransaction.add(R.id.fragment_container,firstFragment); fragmentTransaction.commit(); break; case R.id.bt_second: //获取fragmentmanager,在v4包中getsupportfragmentmanager, //在系统中原生fragment是通过 getFragmentManager 获得的 FragmentManager fragmentManager1 = getSupportFragmentManager(); //2.开启一个事务,通过begintransaction方法开启 FragmentTransaction fragmentTransaction1 = fragmentManager1.beginTransaction(); // 创建fragment对象 SecondFragment secondFragment = new SecondFragment(); //向容器内加入fragment, 一般用add 或者replace方法,传入容器的id,或者是fragment实例 fragmentTransaction1.add(R.id.fragment_container,secondFragment); fragmentTransaction1.commit(); break; } } }
发现:
第一种:
fragmentTransaction1.add(R.id.fragment_container,secondFragment);
app改成replace()方法
第二种:
if(FMs.findFragmentById(R.id.fragment_buju)==null){
//如果没有使用过
MfragmentTransactions.add(R.id.fragment_buju,f2);
}else {
//如果有使用过,就把老的fragment替换掉。
MfragmentTransactions.replace(R.id.fragment_buju,f2);
}
也就是做个判断 , 看是否存在 , 采用不同的方式:
源码:点击打开链接