Lifecyle aware dialogs

This commit is contained in:
M66B
2018-09-20 16:47:28 +00:00
parent 11617bc585
commit fdcbd799f6
10 changed files with 69 additions and 42 deletions

View File

@@ -0,0 +1,36 @@
package eu.faircode.email;
import android.content.Context;
import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.OnLifecycleEvent;
public class DialogBuilderLifecycle extends AlertDialog.Builder implements LifecycleObserver {
private LifecycleOwner owner;
private AlertDialog dialog;
public DialogBuilderLifecycle(Context context, LifecycleOwner owner) {
super(context);
this.owner = owner;
}
public DialogBuilderLifecycle(Context context, int themeResId, LifecycleOwner owner) {
super(context, themeResId);
this.owner = owner;
}
@Override
public AlertDialog create() {
dialog = super.create();
owner.getLifecycle().addObserver(this);
return dialog;
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroy() {
dialog.dismiss();
}
}