日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android移除fragment,Fragment 的创建、替换与移除

發(fā)布時(shí)間:2024/1/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android移除fragment,Fragment 的创建、替换与移除 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。