我正在创建一个自定义对话框,我在显示它时出现了一些错误
代码是:
@Override
public void onClick(final View v) {
// TODO Auto-generated method stub
final Dialog dialog = new Dialog(getBaseContext());
dialog.setContentView(R.layout.addexpense);
dialog.setTitle("Expense Entry");
Button cancle, done;
done=(Button)findViewById(R.id.btndone);
done.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
dismissDialog(1);
}
});
dialog.show();
}
});
}
它就像有一个按钮和点击事件必须显示一个对话框。但是我收到了错误
java.lang.NullPointerException
ERROR/AndroidRuntime(330):at com.nrp.Display $1.onClick(ViewExpense.java:196)
layout.xml是
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android.com/apk/res/android";
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button android:id="@+id/btndone"
android:text="done"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
答案 0 :(得分:0)
在第196行,您想要在按钮上设置监听器。该按钮由findViewById(int id)标识。正如我对您的问题的评论中所提到的,findViewById(int id)可以返回null。
请检查布局XML文件并确保找到该按钮。
答案 1 :(得分:0)
我认为您的完成和取消按钮位于addexpense
布局中,当您调用findViewById()时返回npe,因为您的按钮不在主布局中,如果我正确,您必须使用dialog.findViewById()
而不是findViewById()