Android自定义对话框NullPointerException

我不能为我的生活弄清楚为什么我得到一个NullPointerException。

当用户点击特定图像时,应该弹出一个对话窗口并显示所述图像的更大版本:

private OnClickListener coverListener = new OnClickListener() { public void onClick(View v) { showDialog(DIALOG_COVER); } }; 

DIALOG_COVER设置为= 0。

关联的onCreateDialog如下所示:

 protected Dialog onCreateDialog(int id) { Dialog dialog; switch(id) { case DIALOG_COVER: dialog = new Dialog(mContext); dialog.setContentView(R.layout.cover_dialog); dialog.setTitle(book.getTitle()); ImageView coverLarge = (ImageView)findViewById(R.id.coverLarge); coverLarge.setImageBitmap(book.getCover()); break; default: dialog = null; } return dialog; } 

作为参考,这是cover_dialog.xml:

   

现在,当单击前面描述的图像时,应用程序立即崩溃并通过LogCat抛出以下错误:

 06-08 13:29:17.727: ERROR/AndroidRuntime(2220): Uncaught handler: thread main exiting due to uncaught exception 06-08 13:29:17.757: ERROR/AndroidRuntime(2220): java.lang.NullPointerException 06-08 13:29:17.757: ERROR/AndroidRuntime(2220): at org.kylehughes.android.brarian.AndroidBrarian.onCreateDialog(AndroidBrarian.java:259) 

有问题的行是指onCreateDialog中的这一行:

 coverLarge.setImageBitmap(book.getCover()); 

基本上,我不明白为什么coverLarge在那时是null。 任何帮助将非常感激。

关于:

 /** snip **/ LayoutInflater factory = LayoutInflater.from(mContext); View dialogView = factory.inflate(R.layout.cover_dialog,null); ImageView coverLarge = (ImageView)dialogView.findViewById(R.id.coverLarge); dialog = new Dialog(mContext); dialog.setContentView(dialogView); dialog.setTitle(book.getTitle()); coverLarge.setImageBitmap(book.getCover()); /** snip **/ 

刚从头开始写。 请检查语法

这个

 (ImageView)findViewById(R.id.coverLarge); 

返回null值。 您可能会将无效/格式错误的id String传递给findViewById方法。 在获得NPE之前,您是否已检查(调试过)此String的外观?

是否有可能为不同类型的View(例如Button)定义不同的xml文件定义相同的ID( coverLarge )? 另外,请注意用于设置对话框的id是cover_dialog但是在XML文件中你有coverDialog

你在这一行上有一些事情,一些调试输出会有所帮助。 我将从System.out.println开始,使用coverLarge的值并在违规行之前立即book 。 我知道他们不应该是空的,但是把这些可能性排除在外并不会有什么坏处。