Paweł Ze
Paweł Ze

Reputation: 1

Pass data from dialog to activity Android

I have problem. I made method which creates Dialog with my own layout. And I have no idea how to pass values (Strings) from my EdiText and asing to any variable in my Activity. In comments you can see how I was trying to solve this.

Java method

public void makeDialog(){
        // custom dialog
        final Dialog dialog = new Dialog(context);
        dialog.setContentView(R.layout.dialog_ip);
        dialog.setTitle("IP connection");

// Todo passing value from dialog to activity
//        final EditText ipValueConnection = (EditText)findViewById(R.id.ipValueConnection);
//        ipValueConnection.setOnClickListener(this);
//        EditText portValueConnection = (EditText)findViewById(R.id.portValueConnection);
//        Toast.makeText(context, ipValueConnection.getText().toString(), Toast.LENGTH_LONG).show();

        Button dialogButtonLogin = (Button) dialog.findViewById(R.id.dialogButtonLogin);
        // if button is clicked, close the custom dialog
        dialogButtonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                tryToConnect();
                dialog.dismiss();

            }
        });




        // set the custom dialog components - text, image and button
//        TextView text = (TextView) dialog.findViewById(R.id.IP);

        dialog.show();

    }

XML layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ImageView
        android:src="@drawable/antena"
        android:layout_width="220dp"
        android:layout_height="120dp"
        android:scaleType="centerInside"
        android:background="#FFFFBB33"
        android:contentDescription="@string/app_name"
        android:adjustViewBounds="true"

        />
    <EditText
        android:id="@+id/ipValueConnection"
        android:inputType="textEmailAddress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="4dp"
        android:hint="IP" />
    <EditText
        android:id="@+id/portValueConnection"
        android:inputType="textPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="16dp"
        android:fontFamily="sans-serif"
        android:hint="PORT"/>
    <Button
        android:id="@+id/dialogButtonLogin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Login"
        android:layout_marginTop="5dp"
        />
</LinearLayout>

Upvotes: 0

Views: 3158

Answers (3)

Isj
Isj

Reputation: 2070

The error you are getting means that a reference to the editText cannot be found in the current layout file. You have find the EditText in the custom dialog view instead of the activity view.

So instead of:

 final EditText ipValueConnection =(EditText)findViewById(R.id.ipValueConnection);

use:

 final EditText ipValueConnection =(EditText)dialog.findViewById(R.id.ipValueConnection);

Upvotes: 1

Himanshu Shekher Jha
Himanshu Shekher Jha

Reputation: 1344

Create a interface

public interface OnClickInterface {

    public void onClick();
}

call it instantiate it in your activity onCreate()

 OnClickInterface onClickInterface = new OnClickInterface() {
            @Override
            public void onClick() {
               //Call Method from here
                requiredMethod();
            }
        };

//And in your dialog classs or method

public void makeDialog(OnClickInterface onClickInterface){
//Your code

 dialogButtonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

             onClickInterface.onClick();


                dialog.dismiss();

            }
        });
}

Upvotes: 1

Bee
Bee

Reputation: 152

If i have understood your question correctly, your edit text is in dialog_ip so you need to use

final EditText ipValueConnection = (EditText) dialog.findViewById(R.id.ipValueConnection);

Then you can get text from edit text as

String text= ipValueConnection.getText().toString;

And use that variable in your activity.

Upvotes: 0

Related Questions