可以在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...