Durga Dutt
Durga Dutt

Reputation: 4113

android Dialog alert

i am using a layout file for showing a dialog. My xml file is

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" android:orientation="vertical">
    <EditText android:id="@+id/dialogEditText" android:text="Enter Your Text Here" android:layout_height="wrap_content" android:layout_width="match_parent"></EditText>
    <DatePicker android:id="@+id/datPicker" android:layout_height="wrap_content" android:layout_width="match_parent" ></DatePicker>
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
     <Button android:text="Add" android:id="@+id/dialogAddBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"></Button>
     <Button android:text="Cancel" android:id="@+id/dialogCancelBtn" android:layout_width="200px" android:layout_height="wrap_content" android:layout_centerHorizontal="true"></Button>
    </LinearLayout>
</LinearLayout>

I want to do something when user clicks on "OK" or Cancel button . So i have created anonymous handlers for those button. My Coding is

LayoutInflater inflater = LayoutInflater.from(obj);
            View inflatedView1= inflater.inflate(R.layout.dialog_view,null);

             final Dialog d= new Dialog(obj);
             final Window window= d.getWindow();
             window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
             window.setTitle("Add Item");
             window.setContentView(R.layout.dialog_view);

             final EditText input= (EditText) inflatedView1.findViewById(R.id.dialogEditText);
             Button okBtn= (Button)inflatedView1.findViewById(R.id.dialogAddBtn);
             okBtn.setOnClickListener(new OnClickListener() {

                    public void onClick(View v) {
                        Toast msg= Toast.makeText(obj.getApplicationContext(),"Hello",Toast.LENGTH_LONG);
                        msg.show();
                    }
                });

             Button cancelBtn= (Button) inflatedView1.findViewById(R.id.dialogCancelBtn);
             cancelBtn.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    d.dismiss();
                }
            });
            d.show(); 

When i am clicking on "Ok" or "Cancel button" nothing is happening. I am not able to understand why this is happening. Please suggest me some solution.

Upvotes: 0

Views: 342

Answers (1)

Michael Rose
Michael Rose

Reputation: 7820

you are setting the event handlers on your inflated view but at the same setting the content view to your plain layout:

window.setContentView(R.layout.dialog_view);

Just change this line to

window.setContentView(inflatedView1);

Or, perhaps a better approach without using the layout inflater would be to use

d.setContentView(R.layout.dialog_view);

And then setting the event handlers via

Button okBtn = (Button) d.findViewById(R.id.dialogAddBtn);
okBtn.setOnClickListener(...

Michael

Upvotes: 1

Related Questions