1. 程式人生 > >Android中的Fragment——02(Fragment的動態載入)

Android中的Fragment——02(Fragment的動態載入)

動態載入和靜態載入:

----所謂的靜態載入,不過是用xml定義的方式,將Fragment載入進記憶體
---- 而動態載入,不過是通過程式碼 將一個Fragment載入進記憶體罷了
 ----add(..) : 新增一個Fragment(指定要新增的Fragment和要插入的View ), 與此類似的還有 remove(..)移除,replace(..)替換等

動態載入的步驟:

1,準備好Fragment類2,準備好Fragment物件3,開啟一個處理Fragment的事務4,執行對Fragment的新增add(..),替換replace(..),remove(..)移除 等操作5,對事務進行提交

注意:

   如果允許使用者通過按下BACK鍵來返回到當前Fragment新增進來前的狀態,呼叫commit()之前,可以加入addToBackStack()方法
    
   addToBackStack(String name) :點選back鍵後,讓手機返回到該Fragment載入進來之前的狀態,引數可以是個name,也可以是null

我的動態載入的Demo:

Fragment類以及Fragment的佈局

MyFragment
public class MyFragment extends Fragment {

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		
		View view = inflater.inflate(R.layout.layout_fragment, null);
		return view;
	}
	
}
layout_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <RelativeLayout 
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:background="@android:color/black"
        android:layout_centerInParent="true">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="這是個Fragment"
            android:textColor="@android:color/white"
            android:layout_centerInParent="true"
            android:textSize="20sp"
            android:id="@+id/tv_fragment"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:text="點選按鈕"
            android:id="@+id/bt_fragment"/>
    </RelativeLayout>
    
</RelativeLayout>



我的Activity類,以及Activity的佈局檔案

我的Activity
public class MainActivity extends Activity {
	
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
    
    public void onClick(View v)
    {
    	/*
    	 * 如果允許使用者通過按下BACK鍵來返回到之前的一個Fragment狀態,呼叫commit()之前,可以加入addToBackStack()方法
    	 * 
    	 * addToBackStack(String name)
    	 * 讓手機返回到該Fragment載入進來之前的狀態,引數可以是個name,也可以是null
    	 */
    	
    	//開始進行動態載入
    	//2,準備好Fragment物件
    	MyFragment myFragment = new MyFragment();
    	//3,開啟一個處理Fragment的事務
    	FragmentManager fragmentManager = getFragmentManager();
    	FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
    	//4,執行對Fragment的新增add(..),替換replace(..),remove(..)移除 等操作
    	beginTransaction.add(R.id.container, myFragment);
    	beginTransaction.addToBackStack(null);//讓手機返回到該Fragment載入進來之前的狀態,引數可以是個name,也可以是null
    	//5,對事務進行提交
    	beginTransaction.commit();
    }

}

Activity的佈局檔案 activity_main.xml
<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="com.xulunpeng.dongtaidown.MainActivity">
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="動態載入Fragment"
        android:layout_centerHorizontal="true"
        android:onClick="onClick"/>
    
    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:orientation="vertical"
        android:background="@android:color/holo_green_dark"
        android:layout_centerInParent="true"
        android:id="@+id/container">
        
    </LinearLayout>
    
</RelativeLayout>

注意:

----  如果在 commit() 之前添加了addBackToStack(),那麼點選back鍵時,將會回到當前Fragment 新增進來前的狀態

效果圖:

點選了動態載入後的效果:點選了back鍵後,返回到該Fragment新增進來前的效果:

相關推薦

AndroidFragment——02(Fragment動態載入)

動態載入和靜態載入:----所謂的靜態載入,不過是用xml定義的方式,將Fragment載入進記憶體---- 而動態載入,不過是通過程式碼 將一個Fragment載入進記憶體罷了 ----add(..) : 新增一個Fragment(指定要新增的Fragment和要插入的Vi

Fragment簡單例項-------動態載入

文章目錄 1、實現功能 2、程式碼架構 3、activity_main.xml 檔案 4、fragment_one.xml 檔案 5、FragmentOne.java 檔案

Android 介面卡與fragment或者activity的回撥使用

如何使用介面回撥       使用場景:在activity或者fragment與adapter的回撥中        介面卡中使用: public OnUpdat

android方便為fragment寫入引數的FragmentArgs簡介

原文連結  作者:Hannes Dorfmann  譯者:趙峰 Android開發有時候會令人頭痛。你不得不為諸如建立fragment這樣簡單的事情寫很多程式碼。幸運的是java支援一個強大的工具:註釋處理器(Annotation Processors)。 Fragment的問題是你不得不設

AndroidActivity與Fragment之間資料相互傳遞

一、Activity啟動Activity Intent intent = new Intent(this,MainListActivity.class); startActivity(intent); Activity與Activity傳遞資料 I

Android如何在Fragment新增點選事件切換新的Fragment

此問題是我在Android開發中遇到,因為自己在網上一直沒有找到好的方法,後來摸爬滾打解決後,打算分享給大家。 首先,在遇到該問題時,我先預設讀者已經對Android開發中Fragment的使用已經有了一定的瞭解。 因為在fragment中無法使用F

android如何打造一個動態的底部導航欄

在開發專案中底部導航是必不可少的控制元件之一,雖然網上已經有很多開源的專案可以用,如果一些特定的需求,導致專案不能用的話,那就頭大了,所以明白如何做一個動態導航欄,還是很有必要的。本教程主要針對一些初級的android程式設計師,利用隨手可得的控制元件來完成,而不是用自定義View的方式

android折線圖ichartjs的動態載入資料

之間給大家分享過一個html寫的折線圖,再將折線圖利用webview放在手機中,原來的那個折線圖中的x軸座標在html中已經被寫死,這樣就帶來了操作的不變,程式碼的靈活性也隨之降低。比如,我需要檢視今天的溫度,可是現在是晚上7點,今天還沒有過完,那麼問題來了,怎

Android應用安全之外部動態載入DEX檔案風險

1. 外部動態載入DEX檔案風險描述 Android 系統提供了一種類載入器DexClassLoader,其可以在執行時動態載入並解釋執行包含在JAR或APK檔案內的DEX檔案。外部動態載入DEX檔案的安全風險源於:Anroid4.1之前的系統版本容許Android應用將動態載入的DEX檔案儲存

android 使用Path實現搜尋動態載入動畫效果

今天實現一個搜尋動態載入資料的動畫效果,還是先看效果吧,用文字描述乾巴巴的,看圖說話什麼都明白了, 實現這個就是使用Path中的getSegment()不斷的去改變它擷取片段的start和stop,再結合動畫,今天就分步驟實現它,看完以後你也會覺的不是很難,只是沒想到這麼

【String.xml】修改Androidstrings.xml檔案, 動態改變資料

有些朋友可能會動態的修改Android中strings.xml檔案中的值,在這裡給大家推薦一種簡單的方法。strings.xml中節點是支援佔位符的,如下所示: <string name="data">整數型:%1$d,浮點型:%2$.2f,字串:%3$s&

Cesium簡單的LOD動態載入大量三維模型

Cesium中提供了三維模型載入API,但是很顯然一般三維場景的模型成千上萬,如果單純採用預設的三維模型載入方案會出現瀏覽器吃不消致使崩潰或者高延遲低幀率等影響正常視覺化互動的問題。誠然官方團隊已經開始了一個號稱革新技術的3Dtiles的三維模型批量載入處理方案,但目前其一

關於android 控制元件位置動態設定的問題

1:動態建立一個控制元件,比如WebView WebView m_mWbView = new WebView(getApplication()); 2:設定layout 引數,使用FrameLayout ,其他的好像動態設定位置都無效 ..... ViewGroup mVi

Java之—— JAVA Web專案DLL/SO檔案動態載入方法

相信很多做Java的朋友都有過用Java呼叫JNI實現呼叫C或C++方法的經歷,那麼Java Web中又如何實現DLL/SO檔案的動態載入方法呢。今天就給大家帶來一篇JAVA Web專案中DLL/SO檔案動態載入方法的文章。 在Java Web專案中,我們經常會用到通過J

androidactivity的四種載入模式

一、何為載入模式 在android的多activity開發中,activity之間的跳轉可能需要有多種方式,有時是普通的生成一個新例項,有時希望跳轉到原來某個activity例項,而不是生成大量的重複的activity。載入模式便是決定以哪種方式啟動一個跳轉到原來某個

關於Android根據ID名動態獲取資源的兩個方法

在開發中, 我們習慣了類似下面這種方式去實現引用資源: context.getResources().getDrawable(R.drawable.flower);但是,當我們提前知道這個資源的id,想動態去引用,而不是在id裡面固化應該怎麼辦呢? 比如某個圖片資源的id是

Android 3D 圓形旋轉動態實現

最近挺閒的。對於android的畫圖機制想了深入瞭解。發現java的2維畫圖機制其實也挺強大的。能做出很多我們很炫的效果。此篇文章就講述了通過cavans 的api 實現三維效果的動態旋轉圖。 先上效果圖: android中自帶的roate旋轉使用的是平

Android-Fragment(基本知識,靜態載入動態載入

1.回顧    上篇瞭解了和學習了 Andorid 的webView 的使用 2.重點    (1)Fragment基本知識    (2)Fragment 靜態載入    (3)Fragment 動態

Android viewpager+fragment實現動態載入碎片(fragment重複使用)

    距離上次發部落格好像已經至少有兩個月的時間了,不禁感嘆時間過得真快,也是因為專案一直在忙,所以沒來發部落格,今天有閒情就來一發。好了,廢話不多說,今天講的是fragment複用的問題,提到碎片,相信大家都不陌生,fragment寄宿於Activity,依activi