1

嗨,我写了简单的自定义对话框。其中有几个复选框和一个提交按钮。

每当我尝试阅读复选框应用程序时都会抛出 Nullpointer 异常.. 有人可以帮助解决这个问题,下面是我的自定义 dailog 代码

    public void onClick(View arg0) {

            // custom dialog
            final Dialog dialog = new Dialog(context);
            dialog.setContentView(R.layout.custom);
            dialog.setTitle("Title...");
             CheckBox chk1= (CheckBox) findViewById(R.id.chkbox1);
               Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
            // if button is clicked, close the custom dialog
            dialogButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                   if(chk1.isChecked())
                    dialog.dismiss();
                }
            });

            dialog.show();
}
4

4 回答 4

1

NullPointerException因为您没有为 CheckBox 实例化dialog.findViewById()和设置OnClickListener。如下放置:

 CheckBox chk1= (CheckBox)dialog.findViewById(R.id.chkbox1);
 chk1.setOnClickListener(new OnClickListener() {

   //do something here
  });
于 2013-06-25T11:37:27.307 回答
1

改变:

CheckBox chk1= (CheckBox) findViewById(R.id.chkbox1);

至:

CheckBox chk1= (CheckBox) dialog.findViewById(R.id.chkbox1);

请记住,如果您只是简单地使用findViewById(),则您正在调用它为Activity您当前所在的位置,但据我所知,您希望找到设置为的this CheckBoxR.layout.customdialog

我看到您正在正确加载dialogButton,所以您可能只是忘记对chk1.

于 2013-06-25T11:36:12.790 回答
1

当您为对话框填充布局后,您需要通过对话框访问它。但是您正在通过父视图访问它。无论如何,只需调用它dialog.findViewById(R.id.chkbox1)

于 2013-06-25T11:36:53.817 回答
0

我正在尝试将单选组添加到自定义对话框中。它在加载对话框时出现,但是如何在对话框中将动作列表添加到该单选组中。下面是我的自定义布局 xml。

    <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
 android:theme="@android:style/Theme.Light">

  <EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
      android:layout_marginTop="4dp"

     />


 <CheckBox
    android:id="@+id/chksmart"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="SMARTAPPLIANCE    " 

     android:layout_below="@+id/editText"
    />

<CheckBox
    android:id="@+id/meter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Device"
     android:layout_below="@+id/chksmart"
     />
 <RadioGroup
    android:id="@+id/radiogroup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/android:list" 
    android:textColor="@android:color/black"  >

    <RadioButton
        android:id="@+id/radioGet"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="radioClickHandler1"
        android:text="GET"
        android:textColor="@android:color/background_dark"  />

    <RadioButton
        android:id="@+id/radioPut"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="radioClickHandler1"
        android:text="PUT"
        android:textColor="@android:color/background_dark"  />

    <RadioButton
        android:id="@+id/radioPost"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="radioClickHandler1"
        android:text="POST"
        android:textColor="@android:color/background_dark"  />

    <RadioButton
        android:id="@+id/radioDelete"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="radioClickHandler1"
        android:text="DELETE"
        android:textColor="@android:color/background_dark"  />
      <RadioButton
        android:id="@+id/radioevent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="radioClickHandler1"
        android:text="ADDEVENT"
        android:textColor="@android:color/background_dark"  />
</RadioGroup>

 <Button
    android:id="@+id/dialogButtonOK"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=" SUBMIT "
    android:textColor="#00000f"
    android:textSize="25px"
    android:textStyle="bold"
    android:layout_marginTop="5dp"
    android:layout_marginRight="5dp"
    android:layout_below="@+id/radiogroup"
    />

于 2013-06-25T13:16:06.143 回答