Android Fragment使用簡介

2021-10-10 12:46:16 字數 1674 閱讀 3551

可以在google的**中發現這種寫法,好處是接收確切的引數,返回乙個fragment例項,避免了在建立fragment的時候無法在類外部知道所需引數的問題,在合作開發的時候特別有用。

還有就是fragment推薦使用setarguments來傳遞引數,避免在橫豎屏切換的時候fragment自動呼叫自己的無參建構函式,導致資料丟失。

public

static weatherfragment newinstance

(string cityname)

不要在fragment裡面儲存viewstate!

為了讓你的**更加清晰和穩定,最好區分清楚fragment狀態儲存和view狀態儲存,

如果某個屬性屬於view,則不要在fragment中做它的狀態儲存,除非屬性屬於fragment。

每乙個自定義view都有義務實現狀態的儲存,可以像edittext一樣,設定乙個開關來選擇是否儲存

比如說:android:freezetext=「true/false」。

public

class

customview

extends

view

@override

public

void

onrestoreinstancestate

(parcelable state)..

.}

在add或者replace的時候,呼叫含有tag引數的那個方法,之後再add相同tag的fragment的話,之前的會被替換掉,也就不會同時出現多個相同的fragment了。

public

class

weatherfragment

extends

fragment

if(fragment == null)

mrootview = getview();

mrootview.

setfocusable

(true);

mrootview.

setfocusableintouchmode

(true);

mrootview.

setonkeylistener

(new

view.onkeylistener()

return

false;}});

此時並不需要提供乙個具體的containerid即可顯示,因為詳情頁一般情況下在phone上都是佔據滿螢幕的,用dialogfragment即可。

不過這並不是最好的做法,在要考慮到tablet適配的情況下,如下圖

tablet上是嵌入的,而手機上是佔據全部空間。

此時可以把詳情頁單純用fragment實現,滿足tablet裝置嵌入的需要,在手機上可以使用全屏的dialogfragment來包裹fragment,之後只需要dialogfragment.show(…)即可。

從這裡就可以看出,fragment的使用其實是非常靈活的。

如果後乙個頁面不需要用到前乙個頁面的太多資料,推薦用activity展示,否則最好用fragment

Android fragment介面通訊

fragment 通過介面呼叫activity方法 在fagment中定義介面 public inte ce callbacks 在attach中將activity傳遞的物件例項化為介面 然後就跟普通的物件呼叫一樣 override public void onattach activity act...

Android Fragment完全解析

為了讓介面可以在平板上更好地展示,android在3.0版本引入了fragment 碎片 功能,它非常類似於activity,可以像activity一樣包含布局。fragment通常是巢狀在activity中使用的,現在想象這種場景 有兩個fragment,fragment 1包含了乙個listvi...

Android Fragment滑動切換

1,因為要進行滑動,所以中文在布局中就進行viewpager布局 android id id vp container android layout width match parent android layout height match parent android.support.v4.vi...