Skip to content

Commit

Permalink
Merge pull request #5 from Omega-R/feature/bottom_dialog
Browse files Browse the repository at this point in the history
MvpBottomSheetDialogFragment added
  • Loading branch information
anton-knyazev authored Apr 30, 2019
2 parents 78b2baf + 8ffc4c8 commit 664f191
Showing 1 changed file with 97 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package com.omegar.mvp;

import android.os.Build;
import android.os.Bundle;

import androidx.fragment.app.Fragment;

import com.google.android.material.bottomsheet.BottomSheetDialogFragment;

public class MvpBottomSheetDialogFragment extends BottomSheetDialogFragment {

private boolean mIsStateSaved;
private MvpDelegate<? extends MvpBottomSheetDialogFragment> mMvpDelegate;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

getMvpDelegate().onCreate(savedInstanceState);
}

public void onResume() {
super.onResume();

mIsStateSaved = false;

getMvpDelegate().onAttach();
}

public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);

mIsStateSaved = true;

getMvpDelegate().onSaveInstanceState(outState);
getMvpDelegate().onDetach();
}

@Override
public void onStop() {
super.onStop();

getMvpDelegate().onDetach();
}

@Override
public void onDestroyView() {
super.onDestroyView();

getMvpDelegate().onDetach();
getMvpDelegate().onDestroyView();
}

@Override
public void onDestroy() {
super.onDestroy();

//We leave the screen and respectively all fragments will be destroyed
if (getActivity().isFinishing()) {
getMvpDelegate().onDestroy();
return;
}

// When we rotate device isRemoving() return true for fragment placed in backstack
// http://stackoverflow.com/questions/34649126/fragment-back-stack-and-isremoving
if (mIsStateSaved) {
mIsStateSaved = false;
return;
}

// See https://github.com/Arello-Mobile/Moxy/issues/24
boolean anyParentIsRemoving = false;

if (Build.VERSION.SDK_INT >= 17) {
Fragment parent = getParentFragment();
while (!anyParentIsRemoving && parent != null) {
anyParentIsRemoving = parent.isRemoving();
parent = parent.getParentFragment();
}
}

if (isRemoving() || anyParentIsRemoving) {
getMvpDelegate().onDestroy();
}
}

/**
* @return The {@link MvpDelegate} being used by this Fragment.
*/
public MvpDelegate getMvpDelegate() {
if (mMvpDelegate == null) {
mMvpDelegate = new MvpDelegate<>(this);
}

return mMvpDelegate;
}

}

0 comments on commit 664f191

Please sign in to comment.