Java 自定义对话框错误
我很难显示自定义对话框。我还尝试在扩展对话框的自定义类中创建它 对话框XML 日志显示Java 自定义对话框错误,java,android,xml,android-dialog,Java,Android,Xml,Android Dialog,我很难显示自定义对话框。我还尝试在扩展对话框的自定义类中创建它 对话框XML 日志显示 04-10 10:27:26.588: E/AndroidRuntime(12035): FATAL EXCEPTION: main 04-10 10:27:26.588: E/AndroidRuntime(12035): java.lang.NullPointerException 04-10 10:27:26.588: E/AndroidRuntime(12035): at com.exampl
04-10 10:27:26.588: E/AndroidRuntime(12035): FATAL EXCEPTION: main
04-10 10:27:26.588: E/AndroidRuntime(12035): java.lang.NullPointerException
04-10 10:27:26.588: E/AndroidRuntime(12035): at com.example.youwish.WishAdapter.createDialog(WishAdapter.java:167)
04-10 10:27:26.588: E/AndroidRuntime(12035): at com.example.youwish.WishAdapter$1.onClick(WishAdapter.java:72)
04-10 10:27:26.588: E/AndroidRuntime(12035): at android.view.View.performClick(View.java:4475)
04-10 10:27:26.588: E/AndroidRuntime(12035): at android.view.View$PerformClick.run(View.java:18786)
04-10 10:27:26.588: E/AndroidRuntime(12035): at android.os.Handler.handleCallback(Handler.java:730)
04-10 10:27:26.588: E/AndroidRuntime(12035): at android.os.Handler.dispatchMessage(Handler.java:92)
04-10 10:27:26.588: E/AndroidRuntime(12035): at android.os.Looper.loop(Looper.java:176)
04-10 10:27:26.588: E/AndroidRuntime(12035): at android.app.ActivityThread.main(ActivityThread.java:5419)
04-10 10:27:26.588: E/AndroidRuntime(12035): at java.lang.reflect.Method.invokeNative(Native Method)
04-10 10:27:26.588: E/AndroidRuntime(12035): at java.lang.reflect.Method.invoke(Method.java:525)
04-10 10:27:26.588: E/AndroidRuntime(12035): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
04-10 10:27:26.588: E/AndroidRuntime(12035): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
04-10 10:27:26.588: E/AndroidRuntime(12035): at dalvik.system.NativeStart.main(Native Method)
试试这个
更改贝洛代码
ImageView image = (ImageView) ((Activity) mContext).findViewById(R.id.image_display);
TextView title = (TextView) ((Activity) mContext).findViewById(R.id.title_display);
TextView desc = (TextView) ((Activity) mContext).findViewById(R.id.desc_display);
TextView loc = (TextView) ((Activity) mContext).findViewById(R.id.loc_display);
TextView url = (TextView) ((Activity) mContext).findViewById(R.id.url_display);
RatingBar rating = (RatingBar) ((Activity) mContext).findViewById(R.id.priority_display);
TextView price = (TextView) ((Activity) mContext).findViewById(R.id.price_display);
TextView barcode = (TextView) ((Activity) mContext).findViewById(R.id.ean_display);
TextView date = (TextView) ((Activity) mContext).findViewById(R.id.date_display);
Button button = (Button) ((Activity) mContext).findViewById(R.id.button_display);
作为
并删除
View layout = ((Activity) mContext).findViewById(R.layout.wish_dialog);
您的视图属于对话框布局。因此,请使用dialog.findviewbyd初始化 与此类似,属于对话框布局的其他视图 除掉
View layout = ((Activity) mContext).findViewById(R.layout.wish_dialog);
findViewById查找具有当前视图层次结构中提到的id的视图。将自定义布局设置为对话框。因此,请使用dialog对象来查找视图。在代码中,您已经分别对视图进行了膨胀,并在对话框中明确设置了布局。因此,代码中没有使用视图布局,因为您已显式设置了布局对话框。setContentViewR.layout.wish_dialog;而它应该类似于dialog.setContentViewlayout 您需要更改以下代码:
// custom dialog
final Dialog dialog = new Dialog((Activity) mContext);
View layout = ((Activity) mContext).findViewById(R.layout.wish_dialog);
dialog.setContentView(R.layout.wish_dialog);
dialog.setTitle("Wish");
ImageView image = (ImageView) ((Activity) mContext).findViewById(R.id.image_display);
TextView title = (TextView) ((Activity) mContext).findViewById(R.id.title_display);
TextView desc = (TextView) ((Activity) mContext).findViewById(R.id.desc_display);
TextView loc = (TextView) ((Activity) mContext).findViewById(R.id.loc_display);
..................................
将上述代码更改如下:
// custom dialog
final Dialog dialog = new Dialog((Activity) mContext);
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = mInflater.inflate(R.layout.wish_dialog);
dialog.setContentView(layout);
dialog.setTitle("Wish");
ImageView image = (ImageView)layout.findViewById(R.id.image_display);
TextView title = (TextView) layout .findViewById(R.id.title_display);
TextView desc = (TextView) layout .findViewById(R.id.desc_display);
TextView loc = (TextView) layout .findViewById(R.id.loc_display);
TextView url = (TextView) layout .findViewById(R.id.url_display);
RatingBar rating = (RatingBar)layout .findViewById(R.id.priority_display);
TextView price = (TextView)layout .findViewById(R.id.price_display);
TextView barcode = (TextView)layout .findViewById(R.id.ean_display);
TextView date = (TextView) layout .findViewById(R.id.date_display);
Button button = (Button) layout .findViewById(R.id.button_display
不仅如此,他还需要改变所有的观点。@kalyanpvs我已经解释过了。但我必须复制并更正所有这些行???@GrIsHu请自己尝试一下commenting@GrIsHu找到一个例子@它不起作用-他在对话框中明确设置了布局。他没有在任何地方使用视图布局。@GrIsHu它会工作的。您正在设置对话框的布局,可以在该视图下找到视图hierarchy@GrIsHu我检查一下。它工作正常。您需要显示对话框的屏幕截图吗。
ImageView image = (ImageView)dialog.findViewById(R.id.image_display);
View layout = ((Activity) mContext).findViewById(R.layout.wish_dialog);
// custom dialog
final Dialog dialog = new Dialog((Activity) mContext);
View layout = ((Activity) mContext).findViewById(R.layout.wish_dialog);
dialog.setContentView(R.layout.wish_dialog);
dialog.setTitle("Wish");
ImageView image = (ImageView) ((Activity) mContext).findViewById(R.id.image_display);
TextView title = (TextView) ((Activity) mContext).findViewById(R.id.title_display);
TextView desc = (TextView) ((Activity) mContext).findViewById(R.id.desc_display);
TextView loc = (TextView) ((Activity) mContext).findViewById(R.id.loc_display);
..................................
// custom dialog
final Dialog dialog = new Dialog((Activity) mContext);
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = mInflater.inflate(R.layout.wish_dialog);
dialog.setContentView(layout);
dialog.setTitle("Wish");
ImageView image = (ImageView)layout.findViewById(R.id.image_display);
TextView title = (TextView) layout .findViewById(R.id.title_display);
TextView desc = (TextView) layout .findViewById(R.id.desc_display);
TextView loc = (TextView) layout .findViewById(R.id.loc_display);
TextView url = (TextView) layout .findViewById(R.id.url_display);
RatingBar rating = (RatingBar)layout .findViewById(R.id.priority_display);
TextView price = (TextView)layout .findViewById(R.id.price_display);
TextView barcode = (TextView)layout .findViewById(R.id.ean_display);
TextView date = (TextView) layout .findViewById(R.id.date_display);
Button button = (Button) layout .findViewById(R.id.button_display