|
|
@ -30,24 +30,12 @@ import androidx.lifecycle.LifecycleOwner;
|
|
|
|
import androidx.lifecycle.OnLifecycleEvent;
|
|
|
|
import androidx.lifecycle.OnLifecycleEvent;
|
|
|
|
|
|
|
|
|
|
|
|
public class PopupMenuLifecycle extends PopupMenu implements LifecycleObserver {
|
|
|
|
public class PopupMenuLifecycle extends PopupMenu implements LifecycleObserver {
|
|
|
|
private LifecycleOwner owner;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public PopupMenuLifecycle(@NonNull Context context, LifecycleOwner owner, @NonNull View anchor) {
|
|
|
|
public PopupMenuLifecycle(@NonNull Context context, LifecycleOwner owner, @NonNull View anchor) {
|
|
|
|
super(context, anchor);
|
|
|
|
super(context, anchor);
|
|
|
|
this.owner = owner;
|
|
|
|
|
|
|
|
Log.i("Instantiate " + this);
|
|
|
|
Log.i("Instantiate " + this);
|
|
|
|
|
|
|
|
|
|
|
|
anchor.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
|
|
|
|
owner.getLifecycle().addObserver(this);
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onViewAttachedToWindow(View v) {
|
|
|
|
|
|
|
|
// Do nothing
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onViewDetachedFromWindow(View v) {
|
|
|
|
|
|
|
|
PopupMenuLifecycle.this.dismiss();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -64,6 +52,5 @@ public class PopupMenuLifecycle extends PopupMenu implements LifecycleObserver {
|
|
|
|
public void onDestroy() {
|
|
|
|
public void onDestroy() {
|
|
|
|
Log.i("Destroy " + this);
|
|
|
|
Log.i("Destroy " + this);
|
|
|
|
this.dismiss();
|
|
|
|
this.dismiss();
|
|
|
|
owner = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|