Cómo configurar el botón onclicklistener que está dentro de un cuadro de diálogo personalizado

Soy nuevo en android y estoy recibiendo una excepción de puntero nulo al llamar a onclicklistener de un botón dentro del cuadro de diálogo. que debería hacer.

btn_add.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Dialog d=new Dialog(MainActivity.this); d.setContentView(R.layout.activity_main); d.setTitle("Add content"); d.show(); btnsubmit = (Button) findViewById(R.id.btn_submit); btnsubmit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String name = etName.getText().toString(); String phoneNo = etPhone.getText().toString(); String query = "INSERT INTO PHONE_CONTACTS(name,phone) values ('" + name + "','" + phoneNo + "')"; sqlHandler.executeQuery(query); showList(); etName.setText(""); etPhone.setText(""); } }); } }); 

Realmente apreciaré su ayuda. Así es como se ve mi diálogo xml: –

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/name" /> <EditText android:id="@+id/et_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" > </EditText> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/phone" /> <EditText android:id="@+id/et_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" > </EditText> </TableRow> <Button android:id="@+id/btn_submit" android:layout_width="80dp" android:layout_height="40dp" android:text="@string/submit" android:layout_centerVertical="true" android:layout_centerHorizontal="true"/> </TableLayout> </RelativeLayout> 

Necesita utilizar el objeto de diálogo para inicializar las vistas

  btnsubmit = (Button) d.findViewById(R.id.btn_submit); 

Además, si tiene edittext en su diálogo personalizado, hágalo inicializar de la misma manera.

  EditText etName = (EdiText) d.findViewById(R.id.et_Name); EditText etPhone = (EdiText) d.findViewById(R.id.et_Phoe); 

Puede descartar el diálogo llamando a dialog.dismiss ()

  final Dialog d=new Dialog(MainActivity.this); d.show(); btnsubmit = (Button) d.findViewById(R.id.btn_submit); btnsubmit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { d.dismiss(); } }); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.