|
| 1 | +package com.tencent.liteav.basic.widget; |
| 2 | + |
| 3 | +import android.app.Dialog; |
| 4 | +import android.app.DialogFragment; |
| 5 | +import android.os.Bundle; |
| 6 | +import android.text.TextUtils; |
| 7 | +import android.view.View; |
| 8 | +import android.widget.Button; |
| 9 | +import android.widget.TextView; |
| 10 | + |
| 11 | +import com.tencent.liteav.trtc.basic.R; |
| 12 | + |
| 13 | +public class BaseDialogFragment extends DialogFragment { |
| 14 | + private static final String MESSAGE_KEY = "MESSAGE_KEY"; |
| 15 | + |
| 16 | + private PositiveClickListener mPositiveClickListener; |
| 17 | + private NegativeClickListener mNegativeClickListener; |
| 18 | + |
| 19 | + private Button mButtonNegative; |
| 20 | + private Button mButtonPositive; |
| 21 | + |
| 22 | + private String mBtnPositiveText; |
| 23 | + private String mBtnNegativeText; |
| 24 | + |
| 25 | + /** |
| 26 | + * DialogFragment 有自己的生命周期管理,不能使用全局变量持有,否则会造成内存泄漏。 |
| 27 | + * |
| 28 | + * @param message |
| 29 | + * @return |
| 30 | + */ |
| 31 | + public static BaseDialogFragment newInstance(String message) { |
| 32 | + BaseDialogFragment dialogFragment = new BaseDialogFragment(); |
| 33 | + Bundle args = new Bundle(); |
| 34 | + args.putString(MESSAGE_KEY, message); |
| 35 | + dialogFragment.setArguments(args); |
| 36 | + return dialogFragment; |
| 37 | + } |
| 38 | + |
| 39 | + @Override |
| 40 | + public Dialog onCreateDialog(Bundle savedInstanceState) { |
| 41 | + final Dialog dialog = new Dialog(getActivity(), R.style.BasicDialogFragment); |
| 42 | + dialog.setContentView(R.layout.basic_dialog_fragment_layout); |
| 43 | + dialog.setCancelable(false); |
| 44 | + |
| 45 | + String message = getArguments().getString(MESSAGE_KEY); |
| 46 | + initTextMessage(dialog, message); |
| 47 | + initButtonPositive(dialog); |
| 48 | + initButtonNegative(dialog); |
| 49 | + return dialog; |
| 50 | + } |
| 51 | + |
| 52 | + public void setPositiveClickListener(PositiveClickListener positiveClickListener) { |
| 53 | + mPositiveClickListener = positiveClickListener; |
| 54 | + } |
| 55 | + |
| 56 | + public void setNegativeClickListener(NegativeClickListener negativeClickListener) { |
| 57 | + mNegativeClickListener = negativeClickListener; |
| 58 | + if (mButtonNegative != null) { |
| 59 | + mButtonNegative.setVisibility(negativeClickListener == null ? View.GONE : View.VISIBLE); |
| 60 | + } |
| 61 | + } |
| 62 | + |
| 63 | + public void setPositiveText(String text) { |
| 64 | + if (TextUtils.isEmpty(text)) { |
| 65 | + return; |
| 66 | + } |
| 67 | + mBtnPositiveText = text; |
| 68 | + if (mButtonPositive != null) { |
| 69 | + mButtonPositive.setText(text); |
| 70 | + } |
| 71 | + } |
| 72 | + |
| 73 | + public void setNegativeText(String text) { |
| 74 | + if (TextUtils.isEmpty(text)) { |
| 75 | + return; |
| 76 | + } |
| 77 | + mBtnNegativeText = text; |
| 78 | + if (mButtonNegative != null) { |
| 79 | + mButtonNegative.setText(text); |
| 80 | + } |
| 81 | + } |
| 82 | + |
| 83 | + private void initTextMessage(Dialog dialog, String message) { |
| 84 | + TextView messageView = dialog.findViewById(R.id.tv_message); |
| 85 | + messageView.setText(message); |
| 86 | + } |
| 87 | + |
| 88 | + private void initButtonPositive(Dialog dialog) { |
| 89 | + mButtonPositive = dialog.findViewById(R.id.btn_positive); |
| 90 | + mButtonPositive.setOnClickListener(new View.OnClickListener() { |
| 91 | + @Override |
| 92 | + public void onClick(View v) { |
| 93 | + if (mPositiveClickListener != null) { |
| 94 | + mPositiveClickListener.onClick(); |
| 95 | + } |
| 96 | + BaseDialogFragment.this.dismiss(); |
| 97 | + } |
| 98 | + }); |
| 99 | + if (!TextUtils.isEmpty(mBtnPositiveText)) { |
| 100 | + mButtonPositive.setText(mBtnPositiveText); |
| 101 | + } |
| 102 | + } |
| 103 | + |
| 104 | + private void initButtonNegative(Dialog dialog) { |
| 105 | + mButtonNegative = dialog.findViewById(R.id.btn_negative); |
| 106 | + mButtonNegative.setOnClickListener(new View.OnClickListener() { |
| 107 | + @Override |
| 108 | + public void onClick(View v) { |
| 109 | + if (mNegativeClickListener != null) { |
| 110 | + mNegativeClickListener.onClick(); |
| 111 | + } |
| 112 | + BaseDialogFragment.this.dismiss(); |
| 113 | + } |
| 114 | + }); |
| 115 | + if (!TextUtils.isEmpty(mBtnNegativeText)) { |
| 116 | + mButtonNegative.setText(mBtnNegativeText); |
| 117 | + } |
| 118 | + if (mNegativeClickListener == null) { |
| 119 | + mButtonNegative.setVisibility(View.GONE); |
| 120 | + } |
| 121 | + } |
| 122 | + |
| 123 | + public interface PositiveClickListener { |
| 124 | + void onClick(); |
| 125 | + } |
| 126 | + |
| 127 | + public interface NegativeClickListener { |
| 128 | + void onClick(); |
| 129 | + } |
| 130 | +} |
| 131 | + |
0 commit comments