android移除fragment,Fragment 的创建、替换与移除
一、前言
Fragment 是從 Android 3.0 開(kāi)始引入的,翻譯過(guò)來(lái)就是碎片的意思。Fragment 的作用以及使用場(chǎng)景我就不贅述了。這篇博文我們就主要講 Fragment 的創(chuàng)建、替換與移除這三個(gè)操作,至于 Fragment 的生命周期、如何與 Activity 進(jìn)行通信等內(nèi)容我們會(huì)在后面陸續(xù)講到的。
一、Fragment 的創(chuàng)建
要使用 Fragment,可以通過(guò)繼承 Fragment 類(lèi)來(lái)創(chuàng)建 Fragment,在多數(shù)情況下我們需要給 Fragment 定制一個(gè) UI,但是,也可以為 Activity 創(chuàng)建一個(gè)沒(méi)有 UI,只提供后臺(tái)行為的 Fragment。Fragment 的創(chuàng)建一般有兩種方式:通過(guò) xml 標(biāo)簽創(chuàng)建,即靜態(tài)添加 Fragment;
通過(guò) java 代碼動(dòng)態(tài)創(chuàng)建,即動(dòng)態(tài)添加 Fragment。
1.1、通過(guò) xml 標(biāo)簽靜態(tài)添加 Fragment(不常用)在 IndexActivity 的 activity_index 布局中加入 fragment 標(biāo)簽,并通過(guò) name 關(guān)聯(lián)到相應(yīng)的 Fragment;<?xml version="1.0" encoding="utf-8"?>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".IndexActivity">
android:id="@+id/fragment_center"
android:name="com.zjgsu.fragmentdemo.fragment.CenterFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5" />
android:id="@+id/fragment_bottom"
android:name="com.zjgsu.fragmentdemo.fragment.BottomFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
創(chuàng)建 CenterFragment;public class CenterFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_center, container, false);
return view;
}
}
創(chuàng)建 BottomFragment;public class BottomFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_bottom, container, false);
return view;
}
}
然后我們啟動(dòng) IndexActivity 就可以看到效果了。
1.2、通過(guò) Java 代碼動(dòng)態(tài)添加 Fragment動(dòng)態(tài)添加 Fragment 則不需要在 IndexActivity 的 activity_index 布局中加入 fragment 標(biāo)簽;<?xml version="1.0" encoding="utf-8"?>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".IndexActivity">
android:id="@+id/layout_center"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5" />
android:id="@+id/layout_bottom"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
動(dòng)態(tài)添加 Fragment 主要涉及 FragmentManager 和 FragmentTransaction 這兩個(gè)操作對(duì)象。public class IndexActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index);
/*
動(dòng)態(tài)添加 Fragment 到 Activity 中
要涉及到兩個(gè)操作對(duì)象
FragmentManager 和
FragmentTransaction
*/
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.layout_center, new CenterFragment());
fragmentTransaction.add(R.id.layout_bottom, new BottomFragment());
fragmentTransaction.commit();
}
}
二、Fragment 的替換與移除
Fragment 的替換與移除也都是通過(guò) FragmentManager 和 FragmentTransaction 來(lái)完成的。
我們先來(lái)看下效果:
具體代碼如下所示public class Index2Activity extends AppCompatActivity implements View.OnClickListener {
private Button btnReplace;
private Button btnRemove;
private FirstFragment f1;
private SecondFragment f2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index2);
initView();
}
// 初始化 View
private void initView() {
btnReplace = findViewById(R.id.btn_replace);
btnRemove = findViewById(R.id.btn_remove);
btnReplace.setOnClickListener(this);
btnRemove.setOnClickListener(this);
initFragment();
}
// 初始化 Fragment
private void initFragment() {
f1 = new FirstFragment();
f2 = new SecondFragment();
addFragment();
}
// 添加 Fragment
private void addFragment() {
getSupportFragmentManager()
.beginTransaction()
.add(R.id.layout_container, f1)
.commit();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_replace:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.layout_container, f2)
// 點(diǎn)擊 返回鍵 可以回到原來(lái)的 Fragment
.addToBackStack(null)
.commit();
break;
case R.id.btn_remove:
getSupportFragmentManager()
.beginTransaction()
.remove(f2)
.commit();
break;
}
}
}
三、源碼
源碼已經(jīng)上傳至 github,下一篇博文我們講 Fragment 與 Activity 之間的通信。
總結(jié)
以上是生活随笔為你收集整理的android移除fragment,Fragment 的创建、替换与移除的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何让EXCEL公式结果不显示#N/A、
- 下一篇: 郁闷的100个原因