如何解决“避免在Android中传递null作为视图根”?

在我的android应用程序中,我创build了一个这样的对话框:

private void handleEdit() { LayoutInflater inflater = getLayoutInflater(); View dialoglayout = inflater.inflate(R.layout.dialog_gallery, null); final AlertDialog d = new AlertDialog.Builder(this) .setView(dialoglayout) .setTitle(R.string.edit) .setNegativeButton(R.string.cancel, null) .create(); CheckBox mainCB = (CheckBox)dialoglayout.findViewById(R.id.main); CheckBox usedCB = (CheckBox)dialoglayout.findViewById(R.id.used); mainCB.setChecked(image.getIsMain()); usedCB.setChecked(image.getApproved()); mainCB.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (Network.isNetworkAvailable(GalleryScreen.this)) { new Async_update_image_state(GalleryScreen.this, fish, image, !image.getIsMain(), image.getApproved(), false); d.dismiss(); } else { Popup.ShowErrorMessage(GalleryScreen.this, R.string.no_internet, false); } } }); usedCB.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (Network.isNetworkAvailable(GalleryScreen.this)) { new Async_update_image_state(GalleryScreen.this, fish, image, false, !image.getApproved(), true); d.dismiss(); } else { Popup.ShowErrorMessage(GalleryScreen.this, R.string.no_internet, false); } } }); d.show(); } 

但我得到一个警告, View dialoglayout = inflater.inflate(R.layout.dialog_gallery, null); 强调null

 Avoid passing null as the view root (needed to resolve layout parameters on the inflated layout's root element) 

这是什么意思,我该如何解决?

谢谢。

Solutions Collecting From Web of "如何解决“避免在Android中传递null作为视图根”?"

这对我有用

 View.inflate(getActivity(), R.layout.dialog, null); 

没有任何警告或错误。

在对话框中使用布局进行膨胀时,可以在此处安全地传递null,并忽略警告。

从这个链接

这里的问题是AlertDialog.Builder支持一个自定义的视图,但是没有提供一个带有布局资源的setView()实现。 所以你必须手动膨胀XML。 但是,因为结果会进入对话框,而不会暴露其根视图(实际上它还不存在),所以我们不能访问布局的最终​​父对象,所以我们不能用它来通货膨胀。 事实certificate,这是无关紧要的,因为AlertDialog无论如何都会清除布局上的任何LayoutParams,并用match_parentreplace它们。

代替

 inflater.inflate(R.layout.dialog_gallery, null); 

尝试

 inflater.inflate(R.layout.dialog_gallery, null, false); 

它不会将视图附加到您的情况为空的父项。

查看Android参考的详细信息

代替 :

 inflater.inflate(R.layout.dialog_gallery, null); 

做:

 inflater.inflate(R.layout.dialog_gallery, parent, false); 

@SuppressLint annotation使用Eugenbuild议的@SuppressLint annotation可能会“压制”这个警告,但它并不能解决问题。使用null作为ViewGroup的参数将会给您带来问题。