package com.sw.platecabinet.fragment import android.app.Dialog import android.os.Bundle import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment import androidx.viewbinding.ViewBinding import com.sw.platecabinet.R import com.sw.platecabinet.view.CustomLoadingDialog abstract class BaseFragment( private val bindingInflater: (inflater: LayoutInflater, parent: ViewGroup?, attachToParent: Boolean) -> VB ) : Fragment() { protected var _binding: VB? = null protected val binding get() = _binding!! private var mDialogWaiting: CustomLoadingDialog? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _binding = bindingInflater(inflater, container, false) initialize() registerDataChange() return binding.root } /** * 注册数据变化监听 */ open fun registerDataChange() { } abstract fun initialize() /** * 显示等待提示框 */ fun showWaitingDialog(tip: String?): Dialog? { hideWaitingDialog() val view = View.inflate(requireContext(), R.layout.dialog_waiting, null) if (!TextUtils.isEmpty(tip)) (view.findViewById(R.id.tvTip) as TextView).text = tip mDialogWaiting = CustomLoadingDialog(requireContext(), view, R.style.MyDialog) mDialogWaiting!!.show() mDialogWaiting!!.setCancelable(true) return mDialogWaiting } /** * 隐藏等待提示框 */ fun hideWaitingDialog() { mDialogWaiting?.dismiss() mDialogWaiting = null } override fun onDestroyView() { super.onDestroyView() _binding = null } }