setOnClickListener上的nullpointerexception

时间:2013-08-30 01:48:15

标签: java android button nullpointerexception

我有一个按钮,会弹出一个带OK按钮的对话框,当我点击OK按钮时,我得到一个nullpointerexception。有谁知道什么是错的?

这是我的java代码。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylist);

    myListView = (ListView)findViewById(R.id.list);
    new GetStuff().execute();

    Button importButton = (Button)findViewById(R.id.doButton);
    importButton.setEnabled(false);
    importButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            final Dialog pwdDialog = new Dialog(context);
            pwdDialog.setContentView(R.layout.pwdentry);
            pwdDialog.setTitle("Enter password");
            TextView pwdText = (TextView)pwdDialog.findViewById(R.id.pwdText);
            pwdText.setText("Enter password");
            Button okBut = (Button)findViewById(R.id.okBut);
            okBut.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    pwdDialog.dismiss();
                }
            });
            pwdDialog.show();
        }
    });
}

这是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:orientation="vertical" >

    <TextView
        android:id="@+id/pwdText"
        android:layout_width="fill_parent"
        android:layout_height="50dip"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Enter password"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/pwdEntry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/pwdText"
        android:ems="10"
        android:inputType="numberPassword" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/okBut"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="100px"
        android:layout_height="wrap_content"
        android:layout_below="@+id/pwdEntry"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:layout_marginRight="5dp"
        android:text="OK" />

</RelativeLayout>

谢谢!

2 个答案:

答案 0 :(得分:2)

问题是okBut将为空

 Button okBut = (Button)findViewById(R.id.okBut);

你需要将其作为

 Button okBut = (Button)pwdDialog.findViewById(R.id.okBut);

答案 1 :(得分:0)

您正在使用主要布局R.id.okBut中的ID R.layout.mylist来检索按钮。

Button okBut = (Button)findViewById(R.id.okBut);