如何设置自定义对话框内的onclicklistenerbutton

我是新来的android和我得到空指针exception时,调用onclicklistener对话框中的button。 我该怎么办。

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(""); } }); } }); 

我会很感激你的帮助。 这是我的对话框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> 

Solutions Collecting From Web of "如何设置自定义对话框内的onclicklistenerbutton"

您需要使用对话框对象初始化视图

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

另外,如果您在自定义对话框中有edittext,则可以使用相同的方式初始化它们。

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

您可以通过调用dialog.dismiss()来closures对话框

  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(); } });