66 lines
2.1 KiB
Java
66 lines
2.1 KiB
Java
package com.gh.base.fragment;
|
|
|
|
import android.app.Dialog;
|
|
import android.os.Bundle;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.fragment.app.Fragment;
|
|
import android.view.Gravity;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
|
|
import com.gh.gamecenter.R;
|
|
|
|
/**
|
|
* Wrap another fragment with dialog fragment.
|
|
*/
|
|
public class BaseDialogWrapperFragment extends BaseDialogFragment {
|
|
|
|
private Fragment mFragmentToWrap;
|
|
|
|
public static BaseDialogWrapperFragment getInstance(Fragment fragmentToWrap) {
|
|
BaseDialogWrapperFragment fragment = new BaseDialogWrapperFragment();
|
|
fragment.mFragmentToWrap = fragmentToWrap;
|
|
return fragment;
|
|
}
|
|
|
|
public static BaseDialogWrapperFragment getInstance(Fragment fragmentToWrap, boolean isCancelable) {
|
|
BaseDialogWrapperFragment fragment = new BaseDialogWrapperFragment();
|
|
fragment.mFragmentToWrap = fragmentToWrap;
|
|
fragment.setCancelable(isCancelable);
|
|
return fragment;
|
|
}
|
|
|
|
|
|
@Nullable
|
|
@Override
|
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
return inflater.inflate(R.layout.fragment_dialog_wrapper, null);
|
|
}
|
|
|
|
@Override
|
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
if (mFragmentToWrap != null) {
|
|
getChildFragmentManager().beginTransaction().replace(R.id.fragment_placeholder, mFragmentToWrap).commitNowAllowingStateLoss();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onStart() {
|
|
super.onStart();
|
|
|
|
getDialog().getWindow().setGravity(Gravity.BOTTOM);
|
|
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
|
Dialog dialog = super.onCreateDialog(savedInstanceState);
|
|
dialog.setCanceledOnTouchOutside(true);
|
|
return dialog;
|
|
}
|
|
}
|