Fragment - DialogFragment

1. 它可以作爲一般的Fragment來使用,這個時候不會建立Dialog對象。具體用法是在顯示Fragment的時候採用add( containderViewID ...)這個不爲零。則不會有Dialog對象。

    反之,add(0, fragment, "tag")則會顯示成Dialog對象。

2. 對於事件的響應,如果有Dialog對象則是Dialog對象來響應返回按鈕,菜單等。

    Dialog 實現了 KeyEvent.Callback 回調,並且持有一個 private OnKeyListener mOnKeyListener; 監聽對象,這兩種方法都可以實現按鍵回調。

    按鍵事件全由 public boolean dispatchKeyEvent(KeyEvent event)方法進行攔截並分發。

3. 對於獲取Dialog的時機,Dialog只有在DialogFragment進行顯示的時候纔可能被創建,而且在fragmentManager-transaction-add-commit之後,也是交有UI主線程在空閒的時候進行顯示(回調Fragment的各種方法onCreate-...),所以commit之後立馬調用DialogFragmentgetDialog方法返回的也可能是(基本都是)null,因爲這個時候Fragment的各個回調還沒有被主線程調用。或者UI在忙其他的事情。對於這個應該怎麼解決呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章