Prevent crash

This commit is contained in:
M66B 2019-08-21 14:01:00 +02:00
parent 7ca5178c8a
commit 9f5a092b05
1 changed files with 42 additions and 0 deletions

View File

@ -2,18 +2,46 @@ package eu.faircode.email;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import static android.app.Activity.RESULT_CANCELED;
public class FragmentDialogEx extends DialogFragment {
private boolean once = false;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("Create " + this);
}
@Override
public void onResume() {
super.onResume();
Log.i("Resume " + this);
}
@Override
public void onPause() {
super.onPause();
Log.i("Pause " + this);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i("Destroy " + this);
}
@Override
public void onStart() {
try {
@ -40,6 +68,20 @@ public class FragmentDialogEx extends DialogFragment {
super.onDismiss(dialog);
}
@Override
public void setTargetFragment(@Nullable Fragment fragment, int requestCode) {
super.setTargetFragment(fragment, requestCode);
Log.i("Set target " + this + " " + fragment);
fragment.getViewLifecycleOwner().getLifecycle().addObserver(new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroy() {
Log.i("Reset target " + FragmentDialogEx.this);
FragmentDialogEx.super.setTargetFragment(null, requestCode);
}
});
}
protected void sendResult(int result) {
if (!once) {
once = true;