Skip to main content

Android Custom Dialog Example

We will create a custom dialog box with EditText and Button and pass the result to main activity.
1. Create a new project in android studio.
2. Open activity_main.xml and add a button to show dialog box.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:orientation="vertical"
    tools:context="com.gunjan.andriodcodesnippets.MainActivity"
    android:gravity="center_vertical">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bt_show"
            android:text="Show Dialog"
            android:layout_gravity="center"/>
</LinearLayout>
3. Create a new layout custom_dialog.xml which contains the layout of dialog box. Here, add one EditText and one Button.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:gravity="center"
    android:padding="15dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enter Name"
        android:textSize="25sp"
        android:layout_marginBottom="20dp"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Name"
        android:id="@+id/et_name"
        android:textSize="20sp"
        android:layout_marginBottom="20dp" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save"
        android:id="@+id/bt_save"/>
</LinearLayout>
4. Create a new class CustomDialog.java and type the following code-
public class CustomDialog extends Dialog {

    private Context context;
    private EditText myName;
    private Button myButton;
    private DialogResult dialogResult;

    public CustomDialog(Context context) {
        super(context);
        this.context=context;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.custom_dialog);

        myName=(EditText)findViewById(R.id.et_name);
        myButton=(Button)findViewById(R.id.bt_save);

        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name=myName.getText().toString();
                if(dialogResult!=null){
                    dialogResult.finish(name);
                }
                dismiss();
            }
        });
    }

    public void setDialogResult(DialogResult dialogResult){
        this.dialogResult=dialogResult;
    }

    public interface DialogResult{
        void finish(String name);
    }
}
5. Open MainActivity.java and show dialog on click of button.
public class MainActivity extends AppCompatActivity {

    Button myButtonShow;
    private Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context=this;
        myButtonShow=(Button)findViewById(R.id.bt_show);
        myButtonShow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CustomDialog customDialog=new CustomDialog(context);
                customDialog.show();
                customDialog.setDialogResult(new CustomDialog.DialogResult() {
                    @Override
                    public void finish(String name) {
                        Toast.makeText(context,name,Toast.LENGTH_LONG).show();
                    }
                });
            }
        });
    }
}
6. Run the project.

Comments

Popular Posts