如何解决“避免在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) 

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

谢谢。

Related 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的参数将会给您带来问题。