文章目录
一、认识Fragment
1、Fragment是什么?
Fragment:片段、碎片。是一部分内容构成的片段,体现在屏幕上是一块内容区域。
2、为什么要有Fragment?
通常把Activity作为一个页面,但随着页面元素的增加以及场景的复杂单个页面已经不能满足需要,在屏幕上通常要同时展示多个区域、多个页面内容,这些内容的切换通常是整体的。因此为了让屏幕展示更多内容以及对这些内容统一管理引入Fragment。
3、Fragment详细介绍
Fragment就是将一块内容区域封装在一起统一管理,构成一个Fragment;
Fragment是依附在Activity上而存在的。一个Activity中可以有多个Fragment,各个Fragment之间可以传递数据、互相切换;
Fragment与Activity很相似,有着属于自己的生命周期。
二、Fragment的创建
1、静态创建
创建一个Fragment
布局代码中用一个容器承接并绑定:Fragment标签/FragmentContainerView标签(推荐)
MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mBtnStaticFragment;
private Button mBtnDynamicFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
}
private void initView() {
mBtnStaticFragment = findViewById(R.id.btn_staticFragment);
mBtnDynamicFragment = findViewById(R.id.btn_dynamicFragment);
}
private void initListener() {
mBtnStaticFragment.setOnClickListener(this);
mBtnDynamicFragment.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.btn_staticFragment) {
Intent intent = new Intent(this, StaticFragmentActivity.class);
startActivity(intent);
} else if (view.getId() == R.id.btn_dynamicFragment) {
Intent intent = new Intent(this, DynamicFragmentActivity.class);
startActivity(intent);
}
}
}
activity_main.xml
<?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:orientation="vertical"
android:padding="10dp"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_staticFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="跳转到静态Fragment"
android:textAllCaps="false" />
<Button
android:id="@+id/btn_dynamicFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="跳转到动态Fragment"
android:textAllCaps="false" />
</LinearLayout>
StaticFragmentActivity
public class StaticFragmentActivity extends AppCompatActivity {
private final String TAG = "FragmentLifeStyle";
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate: StaticFragmentActivity");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_static_fragment);
}
@Override
protected void onStart() {
Log.d(TAG, "onStart: StaticFragmentActivity");
super.onStart();
}
@Override
protected void onResume() {
Log.d(TAG, "onResume: StaticFragmentActivity");
super.onResume();
}
@Override
protected void onStop() {
Log.d(TAG, "onStop: StaticFragmentActivity");
super.onStop();
}
@Override
protected void onPause() {
Log.d(TAG, "onPause: StaticFragmentActivity");
super.onPause();
}
@Override
protected void onDestroy() {
Log.d(TAG, "onDestroy: StaticFragmentActivity");
super.onDestroy();
}
}
activity_static_fragment.xml
<?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="wrap_content"
android:orientation="vertical"
android:padding="10dp"
tools:context=".StaticFragmentActivity">
<fragment
android:id="@+id/fm_static1"
android:name="com.wj.fragmentdemo.StaticFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/fragment_static" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fm_static2"
android:name="com.wj.fragmentdemo.StaticFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/fragment_static" />
</LinearLayout>
StaticFragment
/**
* A simple {@link Fragment} subclass.
* Use the {@link StaticFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class StaticFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private final String TAG = "FragmentLifeStyle";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
private TextView mTvLike;
private RadioButton mRbLike;
private RadioButton mRbDislike;
private RatingBar mRbStar;
public StaticFragment() {
Log.d(TAG, "StaticFragment: construct");
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment StaticFragment.
*/
// TODO: Rename and change types and number of parameters
public static StaticFragment newInstance(String param1, String param2) {
StaticFragment fragment = new StaticFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate: StaticFragment");
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "onCreateView: StaticFragment");
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_static, container, false);
}
@Override
public void onInflate(@NonNull Context context, @NonNull AttributeSet attrs, @Nullable Bundle savedInstanceState) {
Log.d(TAG, "onInflate: StaticFragment");
super.onInflate(context, attrs, savedInstanceState);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
Log.d(TAG, "onViewCreated: StaticFragment");
super.onViewCreated(view, savedInstanceState);
mTvLike = view.findViewById(R.id.tv_like);
mRbLike = view.findViewById(R.id.rb_like);
mRbDislike = view.findViewById(R.id.rb_dislike);
mRbStar = view.findViewById(R.id.rb_star);
initListener();
}
private void initListener() {
mRbLike.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
mTvLike.setText("app:喜欢");
}
}
});
mRbDislike.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
mTvLike.setText("app:不喜欢");
}
}
});
mRbStar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float v, boolean fromUser) {
if (fromUser) {
Toast.makeText(getActivity(), v + "颗星", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onDestroy() {
Log.d(TAG, "onDestroy: StaticFragment");
super.onDestroy();
}
}
fragment_static.xml
<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="wrap_content"
android:background="@color/purple_200"
android:orientation="vertical"
tools:context=".StaticFragment">
<!-- TODO: Update blank fragment layout -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="app:喜欢"
android:textSize="20sp" />
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="是" />
<RadioButton
android:id="@+id/rb_dislike"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="否" />
</RadioGroup>
</LinearLayout>
<RatingBar
android:id="@+id/rb_star"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
注:
Fragment标签:
必须声明android:id属性否则会报错;
tools:layout属性可以在预览试图中看到界面。
FragmentContainerView标签:
必须声明android:id属性否则会报错。
2、动态创建
创建Fragment
布局代码中用容器承接但不直接绑定
代码中使用FragmentManager、FragmentTransaction添加Fragment到容器中
DynamicFragmentActivity
public class DynamicFragmentActivity extends AppCompatActivity {
private final String TAG = "DynamicFragmentActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dynamic_fragment);
Log.d(TAG, "savedInstanceState: " + savedInstanceState);
//旋转屏幕重走生命周期 防止fragment多次创建进行判断 只有第一次savedInstanceState为null
if (savedInstanceState == null) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fm_dynamic, DynamicFragment.class, null)
.setReorderingAllowed(true)
.commit();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
}
activity_dynamic_fragment.xml
<?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="wrap_content"
android:orientation="vertical"
android:padding="10dp"
tools:context=".DynamicFragmentActivity">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fm_dynamic"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
DynamicFragment
/**
* A simple {@link Fragment} subclass.
* Use the {@link DynamicFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class DynamicFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
private TextView mTvLike;
private RadioButton mRbLike;
private RadioButton mRbDislike;
private RatingBar mRbStar;
public DynamicFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment DynamicFragment.
*/
// TODO: Rename and change types and number of parameters
public static DynamicFragment newInstance(String param1, String param2) {
DynamicFragment fragment = new DynamicFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_dynamic, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mTvLike = view.findViewById(R.id.tv_like);
mRbLike = view.findViewById(R.id.rb_like);
mRbDislike = view.findViewById(R.id.rb_dislike);
mRbStar = view.findViewById(R.id.rb_star);
initListener();
}
private void initListener() {
mRbLike.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
mTvLike.setText("app:喜欢");
}
}
});
mRbDislike.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
mTvLike.setText("app:不喜欢");
}
}
});
mRbStar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float v, boolean fromUser) {
if (fromUser) {
Toast.makeText(getActivity(), v + "颗星", Toast.LENGTH_SHORT).show();
}
}
});
}
}
fragment_dynamic.xml
<?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="wrap_content"
android:background="@color/purple_200"
android:orientation="vertical">
<!-- TODO: Update blank fragment layout -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="app:喜欢"
android:textSize="20sp" />
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="是" />
<RadioButton
android:id="@+id/rb_dislike"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="否" />
</RadioGroup>
</LinearLayout>
<RatingBar
android:id="@+id/rb_star"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
三、Fragment生命周期
1、静态创建方式
2023-03-18 13:27:13.863 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onCreate: StaticFragmentActivity
2023-03-18 13:27:13.900 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D StaticFragment: construct
2023-03-18 13:27:13.901 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onInflate: StaticFragment
2023-03-18 13:27:13.902 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onCreate: StaticFragment
2023-03-18 13:27:13.903 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onCreateView: StaticFragment
2023-03-18 13:27:13.957 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onViewCreated: StaticFragment
2023-03-18 13:27:13.960 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D StaticFragment: construct
2023-03-18 13:27:13.960 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onInflate: StaticFragment
2023-03-18 13:27:13.961 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onCreate: StaticFragment
2023-03-18 13:27:13.966 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onStart: StaticFragmentActivity
2023-03-18 13:27:13.967 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onCreateView: StaticFragment
2023-03-18 13:27:13.984 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onViewCreated: StaticFragment
2023-03-18 13:27:13.986 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onStart: StaticFragment
2023-03-18 13:27:13.986 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onStart: StaticFragment
2023-03-18 13:27:13.989 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onResume: StaticFragmentActivity
2023-03-18 13:27:13.990 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onResume: StaticFragment
2023-03-18 13:27:13.991 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onResume: StaticFragment
2023-03-18 13:27:19.432 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onPause: StaticFragmentActivity
2023-03-18 13:27:19.434 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onPause: StaticFragment
2023-03-18 13:27:19.434 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onPause: StaticFragment
2023-03-18 13:27:19.845 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onStop: StaticFragmentActivity
2023-03-18 13:27:19.846 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onStop: StaticFragment
2023-03-18 13:27:19.846 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onStop: StaticFragment
2023-03-18 13:27:19.848 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onDestroy: StaticFragmentActivity
2023-03-18 13:27:19.851 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onDestroyView: StaticFragment
2023-03-18 13:27:19.853 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onDestroy: StaticFragment
2023-03-18 13:27:19.853 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onDetach: StaticFragment
2023-03-18 13:27:19.854 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onDestroyView: StaticFragment
2023-03-18 13:27:19.855 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onDestroy: StaticFragment
2023-03-18 13:27:19.855 1041-1041 FragmentLifeStyle com.wj.fragmentdemo D onDetach: StaticFragment
2、动态创建方式
2023-03-18 13:32:51.783 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onCreate: DynamicFragmentActivity
2023-03-18 13:32:51.829 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D savedInstanceState: null
2023-03-18 13:32:51.836 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D DynamicFragment: construct
2023-03-18 13:32:51.840 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onStart: DynamicFragmentActivity
2023-03-18 13:32:51.845 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onCreate: DynamicFragment
2023-03-18 13:32:51.845 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onCreateView: DynamicFragment
2023-03-18 13:32:51.903 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onViewCreated: DynamicFragment
2023-03-18 13:32:51.910 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onStart: DynamicFragment
2023-03-18 13:32:51.913 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onResume: DynamicFragmentActivity
2023-03-18 13:32:51.915 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onResume: DynamicFragment
2023-03-18 13:33:09.618 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onPause: DynamicFragmentActivity
2023-03-18 13:33:09.619 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onPause: DynamicFragment
2023-03-18 13:33:10.104 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onStop: DynamicFragmentActivity
2023-03-18 13:33:10.105 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onStop: DynamicFragment
2023-03-18 13:33:10.111 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onDestroyView: DynamicFragment
2023-03-18 13:33:10.114 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onDestroy: DynamicFragment
2023-03-18 13:33:10.114 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onDetach: DynamicFragment
2023-03-18 13:33:10.115 4395-4395 FragmentLifeStyle com.wj.fragmentdemo D onDestroy: DynamicFragmentActivity
四、Fragment操作
1、add
if (view.getId() == R.id.btn_add1) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fg_modify, StaticFragment.class, null)
.commit();
} else if (view.getId() == R.id.btn_add2) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fg_modify, StaticFragment.class, null)
.setReorderingAllowed(true)
.addToBackStack("myFragment")
.commit();
} else if (view.getId() == R.id.btn_add3) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
StaticFragment staticFragment = new StaticFragment();
fragmentTransaction.add(R.id.fg_modify, staticFragment, "myFragment")
.commit();
}
2、findFragmentById/findFragmentByTag
else if (view.getId() == R.id.btn_findFragmentById) {
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.fg_modify);
if (fragment != null) {
Toast.makeText(this, "找到了Fragment" + fragment, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "没找到Fragment", Toast.LENGTH_SHORT).show();
}
} else if (view.getId() == R.id.btn_findFragmentByTag) {
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag("myFragment");
if (fragment != null) {
Toast.makeText(this, "找到了Fragment" + fragment, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "没找到Fragment", Toast.LENGTH_SHORT).show();
}
}
3、remove
else if (view.getId() == R.id.btn_removeFragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = fragmentManager.findFragmentByTag("myFragment");
if (fragment != null) {
Toast.makeText(this, "即将移除Fragment" + fragment, Toast.LENGTH_SHORT).show();
fragmentTransaction.remove(fragment);
} else {
Toast.makeText(this, "没找到Fragment", Toast.LENGTH_SHORT).show();
}
}
4、replace
else if (view.getId() == R.id.btn_replaceFragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
StaticFragment staticFragment = new StaticFragment();
Bundle bundle = new Bundle();
bundle.putString(StaticFragment.ARG_PARAM1, "这是新的Fragment");
staticFragment.setArguments(bundle);
fragmentTransaction.replace(R.id.fg_modify, staticFragment)
.commit();
}
5、show/hide
else if (view.getId() == R.id.btn_showFragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = fragmentManager.findFragmentById(R.id.fg_modify);
if (fragment != null) {
fragmentTransaction.show(fragment).commit();
}
} else if (view.getId() == R.id.btn_hideFragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = fragmentManager.findFragmentById(R.id.fg_modify);
if (fragment != null) {
fragmentTransaction.hide(fragment).commit();
}
}
6、attach/detch
else if (view.getId() == R.id.btn_attachFragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = fragmentManager.findFragmentById(R.id.fg_modify);
if (fragment != null) {
fragmentTransaction.attach(fragment).commit();
}
} else if (view.getId() == R.id.btn_detachFragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = fragmentManager.findFragmentById(R.id.fg_modify);
if (fragment != null) {
fragmentTransaction.detach(fragment).commit();
}
}