Кнопка пользовательского макета не работает в AlertDialog - PullRequest
0 голосов
/ 26 февраля 2019

Я пытался исправить это некоторое время, включая поиск в Интернете, но я просто не могу найти решение.Все говорят, что вы должны добавить onClickListener , и я сделал, но это просто не работает.Когда я нажимаю кнопку, ничего не происходит.Подробный журнал никогда не появляется.Это все в одном классе, который реализует Runnable , поэтому он может делать вещи в фоновом режиме, и этот EditText onClickListener реализован внутри onCreate изкласс.

  //Setting up EditText onClick Listeners
        oof.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Creating custom layout dialog
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                final View inflatedView = getLayoutInflater().inflate(R.layout.dialog_box_popup, null);
                builder.setView(R.layout.dialog_box_popup);
                builder.setTitle("Edit");

                final EditText indc = (EditText)inflatedView.findViewById(R.id.weightInDcEtxt);
                Button incrementBtn = (Button)inflatedView.findViewById(R.id.incrementBtn);
                Button decrementBtn = (Button)inflatedView.findViewById(R.id.decrementBtn);

                //Enabling the increment button in a dialog
                incrementBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        Log.v("increment", "Button clicked: " + MiscVariables.rocket);
                    }
                });

                //Displaying dialog
                AlertDialog dialog = builder.create();  
                dialog.show();   
            }
        });

А вот пользовательский макет для диалога, использующего ConstraintLayout:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="match_parent">

    <Button
        android:id="@+id/decrementBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:text="-"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/incrementBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:text="+"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/weightInDcEtxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:ems="10"
        android:gravity="center"
        android:inputType="numberDecimal"
        android:text="@string/editTextFromDialog"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/incrementBtn"
        app:layout_constraintStart_toEndOf="@+id/decrementBtn"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayou

Оттуда я понятия не имею, что делать.Если кто-нибудь может мне помочь, я был бы признателен, спасибо!

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019
  final View inflatedView = View.inflate(getActivity(), R.layout.dialog_box_popup, null);
            AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
            alert.setView(inflatedView);

            final EditText indc = (EditText) inflatedView.findViewById(R.id.weightInDcEtxt);
            Button incrementBtn = (Button) inflatedView.findViewById(R.id.incrementBtn);
            Button decrementBtn = (Button) inflatedView.findViewById(R.id.decrementBtn);


            //Enabling the increment button in a dialog
            incrementBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Toast.makeText(getActivity(), "Hellloo", Toast.LENGTH_SHORT).show();
                }
            });

            alert.show();

Попробуйте, надеюсь, это решение будет работать ... !!!

0 голосов
/ 26 февраля 2019

Я нашел решение.Вот код:

//Setting up EditText onClick Listeners
        oof.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Creating custom layout dialog
                AlertDialog.Builder builder = new AlertDialog.Builder(context);        
                builder.setView(R.layout.dialog_box_popup);
                builder.setTitle("Edit");

                //Enabling the increment button in a dialog
                incrementBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        Log.v("increment", "Button clicked: " + MiscVariables.rocket);
                    }
                });

                //Displaying dialog
                AlertDialog dialog = builder.create();
                dialog.show();

                final EditText indc = 
                (EditText)inflatedView.findViewById(R.id.weightInDcEtxt);
                Button incrementBtn = 
                (Button)dialog.findViewById(R.id.incrementBtn);
                Button decrementBtn = 
                (Button)dialog.findViewById(R.id.decrementBtn); 
            }

        });

Надутый вид здесь был бесполезен.Все должны были быть доступны, выполнив dialog.findViewById.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...