2015-09-05 111 views
13

我一直在試圖確定是否可以創建可觀察的DialogFragment。基本上我希望能夠到:如何使用RxJava管理DialogFragment?

  • 創建並顯示一個DialogFragment
  • 找回的RX Observable它可以訂閱到的結果(確定/取消按下,字符串輸入,後臺任務成功/失敗,等)
  • 要處理好配置變化

到目前爲止,我已經找到了最接近的事是ReactiveDialog,這曾經是RxAndroid的一部分,但一直removed from RxAndroid in v1.0.0爲簡化RxAndroid的一部分。

儘管ReactiveDialog的確看起來符合我的前兩條標準,但似乎並沒有處理配置更改。這裏有兩個問題需要考慮:

  1. DialogFragment必須保持其Observable跨越配置更改,因此它可以通知其狀態的用戶。
  2. 用戶必須能夠保留他們的訂閱或在配置更改後重新訂閱(顯然不會產生內存泄漏)。

我對RxJava還是比較新的,所以我仍然試圖圍繞如何管理這樣的事情。這似乎應該是可能的,但我覺得它會需要一個靜態或單一經理和可能retainedInstanceDialogFragments

任何人有任何建議或最佳做法呢?

+0

嗨!你找到了解決辦法? – Tiberal

回答

1

這裏有兩個問題;一個是你不想在重新佈局期間丟失Java對象 - 查看關於這個的runtime changes docs

另一個問題是,當觸發該操作時,您想創建一個具有對話框操作的Observable。爲此,請查看RxJava文檔,Asynchronous Observer example。您需要創建一個Observable.OnSubscribe,並將該Subscriber傳遞給您的代碼,該代碼將調用必要的onNext/onError/onCompleted調用。