Как передать значения из события диалога родительской активности? - PullRequest
0 голосов
/ 03 октября 2018

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

private AlertDialog.Builder blockDialog;  
blockDialog=new AlertDialog.Builder(AllMachine.this); 
blockDialog.setView(**R.layout.activityEnterMinutes**); 
AlertDialog myDialog=blockDialog.create(); 
myDialog.show();

Я создал макет и использовал его через setView как указано выше.Я попытался добавить onClickListener в Java-файл используемого layout(EnterMinutes.java).Но эта логика не отражает.

Теперь мой диалог открывается правильно, но мне нужна помощь в том, как отправить значения, введенные в EditText, в родительское действие?Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Код макета диалога

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/con"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="@color/card2back"
    android:orientation="vertical"
    tools:context=".Final_page">

    <TextView
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@color/colorPrimary"
        android:ems="10"
        android:text="@string/machinetime"
        android:textAlignment="center"
        android:textColor="@color/white"
        android:textColorLink="@color/white"
        android:textSize="25sp"
        android:textStyle="bold"
        tools:textAlignment="center" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/edithr"
            android:layout_width="66dp"
            android:layout_height="50dp"
            android:layout_marginStart="125dp"
            android:hint="@string/hh"
            android:inputType="number"
            android:maxLength="2"
            android:scrollbars="vertical"
            android:textColorHint="@color/black"
            android:textColorLink="@color/black" />

        <EditText
            android:id="@+id/editmn"
            android:layout_width="66dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="125dp"
            android:hint="@string/mm"
            android:inputType="number"
            android:maxLength="2"
            android:textColorHint="@color/black"
            android:textColorLink="@color/black" />

    </LinearLayout>


    <Button
        android:id="@+id/buttonbloc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="150dp"
        android:layout_marginEnd="68.5dp"
        android:layout_marginBottom="10dp"
        android:background="@color/colorPrimary"
        android:text="@string/bloc"
        android:textColor="@color/white" />
</LinearLayout>

И у меня есть код ниже в моей родительской активности, который вызывает диалог

b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (h1 != 0 || m1 != 0) {
                    Toast.makeText(getBaseContext(), "Wait for Machine to get Free", Toast.LENGTH_LONG).show();
                }
                else
                {
                    time_value=new AlertDialog.Builder(AllMachine.this);
                    time_value.setView(R.layout.activity_final_page);
                    AlertDialog nan=time_value.create();
                    nan.show();
                }
                }
        });

1 Ответ

0 голосов
/ 03 октября 2018

Решение:

Добавьте приведенный ниже код для пользовательского диалога:

    final Dialog dialog = new Dialog(context);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.your_dialog_layout);

    EditText text1 = (EditText) dialog.findViewById(R.id.your_edittext_Id1);
    EditText text2 = (EditText) dialog.findViewById(R.id.your_edittext_Id2);

    Button dialogButton = (Button) dialog.findViewById(R.id.your_button_Id);
    dialogButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String text1 = text1.getText.toString().trim();
            String text2 = text2.getText.toString().trim();

            .... (Write Whatever You Want The Button To Do)

        }
    });

    dialog.show();

В соответствии с приведенным выше кодом, когда вы нажимаете кнопку, он принимаетданные как из EditText s, так и из этих двух строк.Вы можете использовать эти данные везде, где вам нужно.

Любые сомнения, пожалуйста, прокомментируйте.

Надеюсь, это поможет.

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