DialogFragment не отображается

Я пытаюсь создать всплывающее диалоговое окно ввода, которое я могу вызывать из любого действия, и диалоговое окно должно возвращать ввод для вызываемого действия.

Мой вызов фрагмента

FragmentManager manager = getSupportFragmentManager();

InputDialog inputDialog = new InputDialog();

Bundle bundle = new Bundle();
bundle.putString("header", "Enter new Name");
bundle.putString("hint", "NAME");
bundle.putInt("type", InputType.TYPE_CLASS_TEXT);
bundle.putString("negative", "Cancel");
bundle.putString("positive", "Update");

inputDialog.setArguments(bundle);
inputDialog.show(manager, "frag_input_name");

Мой класс DialogFragment

public class InputDialog extends DialogFragment
{
    private TextView tvHeader;
    private EditText etInput;
    private Button buttPositive, buttNegative;

    private String header, hint, negative, positive, input;
    private Integer type;

    public interface InputDialogListener
    {
        void onFinishInputDialog(String input);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.dialog_input, container, false);

        tvHeader = view.findViewById(R.id.inputdiag_tv_header);
        etInput = view.findViewById(R.id.inputdiag_et_input);
        buttNegative = view.findViewById(R.id.inputdiag_button_negative);
        buttPositive = view.findViewById(R.id.inputdiag_button_positive);

        header = getArguments().getString("header");
        hint = getArguments().getString("hint");
        type = getArguments().getInt("type", InputType.TYPE_CLASS_TEXT);
        negative = getArguments().getString("negative");
        positive = getArguments().getString("positive");

        tvHeader.setText(header);
        etInput.setHint(hint);
        etInput.setInputType(type);
        buttNegative.setText(negative);
        buttPositive.setText(positive);

        buttNegative.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                InputDialog.this.dismiss();
            }
        });

        buttPositive.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                input = etInput.getText().toString().trim();

                if(isInputValid(input))
                {
                    InputDialogListener activity = (InputDialogListener) getActivity();
                    activity.onFinishInputDialog(input);
                    InputDialog.this.dismiss();
                }
                else
                {
                    etInput.setError("Invalid Input");
                }
            }
        });

        getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

        return view;
    }

    private Boolean isInputValid(String input)
    {
        switch (type)
        {
            case InputType.TYPE_CLASS_TEXT: return isTextValid(input);
            case InputType.TYPE_CLASS_PHONE: return isPhoneValid(input);
            default: return false;
        }
    }

    private Boolean isTextValid(String input)
    {
        return input != null && input.trim().length() > 0;
    }

    private Boolean isPhoneValid(String input)
    {
        return Pattern.matches("[0-9]{10}", input);
    }
}

Мой диалог xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:elevation="5dp">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:elevation="5dp"
        app:cardCornerRadius="5dp"
        app:cardElevation="5dp"
        app:cardMaxElevation="5dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:id="@+id/inputdiag_tv_header"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:layout_marginBottom="20dp"
                android:text="@string/Test"
                android:textAlignment="center"
                android:textColor="@color/colorNFN"
                android:textSize="28sp"
                app:layout_constraintBottom_toTopOf="@+id/inputdiag_et_input"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <EditText
                android:id="@+id/inputdiag_et_input"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:background="@drawable/rounded_corner"
                android:ems="10"
                android:hint="@string/Test"
                android:importantForAutofill="no"
                android:inputType="textPersonName"
                android:paddingVertical="4dp"
                android:singleLine="true"
                android:textAlignment="center"
                android:textColor="@color/colorNFN"
                android:textSize="24sp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/inputdiag_tv_header" />

            <Button
                android:id="@+id/inputdiag_button_negative"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="40dp"
                android:layout_marginBottom="20dp"
                android:text="@string/Test"
                android:textColor="@color/colorNFN"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toStartOf="@+id/inputdiag_button_positive"
                app:layout_constraintHorizontal_bias="0.5"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/inputdiag_et_input" />

            <Button
                android:id="@+id/inputdiag_button_positive"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:backgroundTint="@color/colorNFN"
                android:text="@string/Test"
                android:textColor="@color/LightGrey"
                app:layout_constraintBottom_toBottomOf="@+id/inputdiag_button_negative"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.5"
                app:layout_constraintStart_toEndOf="@+id/inputdiag_button_negative"
                app:layout_constraintTop_toTopOf="@+id/inputdiag_button_negative" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>

Код работает нормально, вылетов нет. Когда фрагмент вызывается, фон тускнеет, но диалог не отображается. PS: Я новичок в разработке приложений для Android, поэтому, пожалуйста, объясните попроще. Я следил за этим уроком, но я изменил несколько вещей, чтобы дизайн диалогов был сделан по моему индивидуальному заказу.

0 ответов