Parcourir la source

- DialogObserver新增Fragment构造函数

drake il y a 5 ans
Parent
commit
e4d5efe7a4

+ 1 - 1
README.md

@@ -54,7 +54,7 @@ allprojects {
 module 的 build.gradle
 
 ```groovy
-implementation 'com.github.liangjingkanji:Net:1.2.0'
+implementation 'com.github.liangjingkanji:Net:1.2.1'
 ```
 
 

+ 11 - 3
net/src/main/java/com/drake/net/observer/DialogObserver.kt

@@ -11,6 +11,7 @@ package com.drake.net.observer
 
 import android.app.Dialog
 import android.app.ProgressDialog
+import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
 import androidx.lifecycle.Lifecycle.Event
 import androidx.lifecycle.LifecycleObserver
@@ -31,11 +32,17 @@ import io.reactivex.observers.DefaultObserver
  * @param cancelable 是否允许用户取消对话框
  */
 abstract class DialogObserver<M>(
-    var activity: FragmentActivity,
+    var activity: FragmentActivity?,
     var dialog: Dialog? = null,
     var cancelable: Boolean = true
 ) : DefaultObserver<M>(), LifecycleObserver {
 
+    constructor(
+        fragment: Fragment?,
+        dialog: Dialog? = null,
+        cancelable: Boolean = true
+    ) : this(fragment?.activity, dialog, cancelable)
+
     companion object {
 
         internal var defaultDialog: (DialogObserver<*>.(context: FragmentActivity) -> Dialog)? =
@@ -44,12 +51,13 @@ abstract class DialogObserver<M>(
 
 
     override fun onStart() {
+        activity ?: return
 
-        activity.lifecycle.addObserver(this)
+        activity!!.lifecycle.addObserver(this)
 
         dialog = when {
             dialog != null -> dialog
-            defaultDialog != null -> defaultDialog?.invoke(this, activity)
+            defaultDialog != null -> defaultDialog?.invoke(this, activity!!)
             else -> {
                 val progress = ProgressDialog(activity)
                 progress.setMessage("加载中")

+ 1 - 0
sample/src/main/java/com/drake/net/sample/MainActivity.kt

@@ -9,5 +9,6 @@ class MainActivity : AppCompatActivity() {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
 
+
     }
 }