Android形形色色的彈出框(中)

1 前言

上文我們實現(xiàn)了基本的對話框王悍,但是這個話題并沒有進行完。我們緊接上文,沒有廣告,精彩馬上開始搔谴。

2自定義對話框視圖

使用AlertDialog創(chuàng)建對話框大州,實現(xiàn)自定義視圖是非常簡單的事情纵刘,只需要調用setView(View v)方法傳入一個View就行了弃酌,so easy!當然,如果你將確定或取消的按鈕自己寫在了布局里暗膜,點擊后你就需要自己去控制對話框的關閉了匀奏。

3 DialogFragment簡介

DialogFragment是個什么鬼?從名字看是對話框碎片学搜,沒錯娃善,我為我的英文水平感到驕傲论衍。在Android3.0出現(xiàn)碎片之后,google官方就強烈推薦使用DialogFragment代替直接使用AlertDialog聚磺,在我個人使用下來的感受是坯台,確實比之前靈活很多。為什么要放棄直接使用AlertDialog呢瘫寝?原因有三:

  1. 碎片的復用性更好蜒蕾,碎片對話框不光能最為一個對話框,還能當成一個普通的碎片來復用
  2. 碎片有完整的生命周期焕阿,更好管理對話框的創(chuàng)建咪啡、顯示、銷毀
  3. 和Activity實現(xiàn)了完全的解耦暮屡,使用這種方式撤摸,你的對話框和Activity基本上沒啥關系

4 DialogFragment的用法

記好,DialogFragment有兩個身份:
1.對話框
2.普通的Fragment

如果你只想單純的把它當做一個對話框使用褒纲,你應該用這個姿勢使用它

繼承自DialogFragment

1.創(chuàng)建准夷。復寫public Dialog onCreateDialog(Bundle savedInstanceState)方法,注意莺掠,返回值是一個Dialog衫嵌。此方法用來創(chuàng)建一個對話框,onCreateDialog方法內實現(xiàn)和上文提到的AlertDialog完全一致彻秆,只需要在最后將創(chuàng)建好的AlertDialog返回回去就行了

2.顯示楔绞。使用show(FragmentManager manager, String tag) 方法去顯示出來

3.銷毀 。點擊任何一個按鈕或者對話框之外的區(qū)域都會銷毀掖棉,這點和AlertDialog的特性是一致的

使用這種方式創(chuàng)建對話框的特點:

1.不再是雙重身份墓律,只能作為一個對話框存在,相當于DialogFragment只是作為承載AlertDialog的容器了幔亥。

2.DialogFragment沒有后退棧

3.顯示的時候有兩個show方法:show(FragmentManager manager, String tag)show(FragmentTransaction transaction, String tag),注意這兩個方法的第一個參數(shù)類型不同察纯,這里使用哪個都可以帕棉,只是既然沒有后退棧,就沒必要傳入事務了饼记,推薦優(yōu)先使用前者

那如何才能讓DialogFragment具有雙重身份呢香伴?讓我們換個姿勢使用它。

1.繼承自它自然不必強調了

2.創(chuàng)建的時候具则,復寫public View onCreateView()方法即纲,是不是覺得很熟悉啊博肋?沒錯低斋,就是和普通的Fragment創(chuàng)建視圖的方式完全一樣

3.顯示蜂厅。這里需要分兩種情況,也就是說你需要讓它以對話框身份顯示還是以普通Fragment方式顯示膊畴。如果是作為對話框掘猿,調用show方法就可以了,show方法的第一個參數(shù)仍然傳遞碎片管理者或碎片事務都行唇跨,區(qū)別在于碎片事務支持后退棧稠通;如果作為普通碎片使用的話,那就不必多說了买猖,和平時的使用方式完全一致改橘,使用碎片事務進行add操作并提交就行了。


這種創(chuàng)建方式的特點

1.創(chuàng)建時和普通碎片用法完全一致玉控,我們可以平滑的過渡唧龄,降低學習成本
2.靈活性高,雙重身份

3.支持后退棧奸远,可以使用碎片事務的全部特性

個人認為既棺,第二種創(chuàng)建方式明顯優(yōu)于第一種,這也許是google大力提倡使用DialogFragment代替AlertDialog的最主要的原因吧

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末懒叛,一起剝皮案震驚了整個濱河市丸冕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌薛窥,老刑警劉巖胖烛,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诅迷,居然都是意外死亡佩番,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門罢杉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趟畏,“玉大人,你說我怎么就攤上這事滩租「承悖” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵律想,是天一觀的道長猎莲。 經常有香客問我,道長技即,這世上最難降的妖魔是什么著洼? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上身笤,老公的妹妹穿的比我還像新娘豹悬。我一直安慰自己,他們只是感情好展鸡,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布屿衅。 她就那樣靜靜地躺著,像睡著了一般莹弊。 火紅的嫁衣襯著肌膚如雪涤久。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天忍弛,我揣著相機與錄音响迂,去河邊找鬼。 笑死细疚,一個胖子當著我的面吹牛蔗彤,可吹牛的內容都是我干的。 我是一名探鬼主播疯兼,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼然遏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吧彪?” 一聲冷哼從身側響起待侵,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姨裸,沒想到半個月后秧倾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡傀缩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年那先,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赡艰。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡售淡,死狀恐怖,靈堂內的尸體忽然破棺而出瞄摊,到底是詐尸還是另有隱情勋又,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布换帜,位于F島的核電站,受9級特大地震影響鹤啡,放射性物質發(fā)生泄漏惯驼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祟牲。 院中可真熱鬧隙畜,春花似錦、人聲如沸说贝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乡恕。三九已至言询,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傲宜,已是汗流浹背运杭。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留函卒,地道東北人辆憔。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像报嵌,于是被迫代替她去往敵國和親虱咧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容