BaseDialog.java 1.67 KB
package com.hjx.parent.dialog;

import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;

import androidx.annotation.NonNull;
import androidx.viewbinding.ViewBinding;

import com.hjx.parent.R;


public abstract class BaseDialog<VB extends ViewBinding> extends AlertDialog {

    public BaseDialog(Context context) {
        this(context, R.style.BaseDialog);
    }

    public BaseDialog(Context context, int themeResId) {
        super(context, themeResId);
    }

    public VB binding;
    private boolean isDialogCreated = false;
    public boolean isDialogCreated() {
        return isDialogCreated;
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = getBinding();
        setContentView(binding.getRoot());
        Window window = getWindow();
        if (window != null) {
            setWindowsLayout(window);
            window.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
        }

        initView();
        isDialogCreated = true;
    }

    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        onDialogStart();
    }

    public void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        onDialogStop();
    }

    public void setWindowsLayout(Window window) {
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    }

    public void initView() {
    }

    public void onDialogStart() {
    }

    public void onDialogStop() {
    }

    @NonNull
    public abstract VB getBinding();

}