From 57cfb46b1b3f5006afe4b8a546ac128b9726ad48 Mon Sep 17 00:00:00 2001 From: Neel Doshi Date: Thu, 6 Jun 2024 17:29:02 +0530 Subject: [PATCH] Migrated `PostSettingsInputDialogFragment` to ViewBinding --- .../PostSettingsInputDialogFragment.java | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/PostSettingsInputDialogFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/PostSettingsInputDialogFragment.java index af749db0878c..ad082d278e91 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/PostSettingsInputDialogFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/PostSettingsInputDialogFragment.java @@ -8,9 +8,6 @@ import android.text.TextUtils; import android.text.TextWatcher; import android.view.LayoutInflater; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; @@ -18,11 +15,13 @@ import androidx.fragment.app.DialogFragment; import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import com.google.android.material.textfield.TextInputLayout; import org.wordpress.android.R; +import org.wordpress.android.databinding.PostSettingsInputDialogBinding; import org.wordpress.android.util.ActivityUtils; +import java.util.Objects; + public class PostSettingsInputDialogFragment extends DialogFragment implements TextWatcher { public static final String TAG = "post_settings_input_dialog_fragment"; @@ -35,6 +34,8 @@ public interface PostSettingsInputDialogListener { private static final String HINT_TAG = "hint"; private static final String DISABLE_EMPTY_INPUT_TAG = "disable_empty_input"; private static final String MULTILINE_INPUT_TAG = "is_multiline_input"; + + private PostSettingsInputDialogBinding mBinding; private String mCurrentInput; private String mTitle; private String mHint; @@ -94,34 +95,31 @@ public void onDismiss(DialogInterface dialog) { public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new MaterialAlertDialogBuilder(new ContextThemeWrapper(getActivity(), R.style.PostSettingsTheme)); - LayoutInflater layoutInflater = getActivity().getLayoutInflater(); + LayoutInflater layoutInflater = requireActivity().getLayoutInflater(); //noinspection InflateParams - View dialogView = layoutInflater.inflate(R.layout.post_settings_input_dialog, null); - builder.setView(dialogView); - final EditText editText = dialogView.findViewById(R.id.post_settings_input_dialog_edit_text); + mBinding = PostSettingsInputDialogBinding.inflate(layoutInflater, null, false); + builder.setView(mBinding.getRoot()); if (mIsMultilineInput) { - editText.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE); + mBinding.postSettingsInputDialogEditText.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE); } else { - editText.setInputType(InputType.TYPE_CLASS_TEXT); + mBinding.postSettingsInputDialogEditText.setInputType(InputType.TYPE_CLASS_TEXT); } if (!TextUtils.isEmpty(mCurrentInput)) { - editText.setText(mCurrentInput); + mBinding.postSettingsInputDialogEditText.setText(mCurrentInput); // move the cursor to the end - editText.setSelection(mCurrentInput.length()); + mBinding.postSettingsInputDialogEditText.setSelection(mCurrentInput.length()); } - editText.addTextChangedListener(this); + mBinding.postSettingsInputDialogEditText.addTextChangedListener(this); - TextInputLayout textInputLayout = dialogView.findViewById(R.id.post_settings_input_dialog_input_layout); - textInputLayout.setHint(mTitle); + mBinding.postSettingsInputDialogInputLayout.setHint(mTitle); - TextView hintTextView = dialogView.findViewById(R.id.post_settings_input_dialog_hint); - hintTextView.setText(mHint); + mBinding.postSettingsInputDialogHint.setText(mHint); builder.setNegativeButton(R.string.cancel, null); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - mCurrentInput = editText.getText().toString(); + mCurrentInput = Objects.requireNonNull(mBinding.postSettingsInputDialogEditText.getText()).toString(); if (mListener != null) { mListener.onInputUpdated(mCurrentInput); } @@ -154,4 +152,10 @@ public void afterTextChanged(Editable editable) { mDialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(!disabled); } } + + @Override + public void onDestroy() { + super.onDestroy(); + mBinding = null; // ensures binding reference gets null on fragment destroy + } }