我正在尝试摆脱这段代码中的 NPE:
Dialog mutuallyDialog = new Dialog(getActivity());
mutuallyDialog.requestWindowFeature(android.view.Window.FEATURE_NO_TITLE);
RelativeLayout container = (RelativeLayout) getActivity().findViewById(R.layout.new_couple);
container.findViewById(R.id.popup_av2).setBackground(someDrawable); // NPE, drawable returned form elsewhere
mutuallyDialog.setContentView(container);
mutuallyDialog.show();
R.layout.new_ Couple 只是一个简单的布局 xml,其中包含一些文本和 ImageView popup_av1 和 popup_av2。
我想要实现的是能够在显示对话框之前更改这两个 ImageViews src,但由于某种原因,上面的代码不起作用。这种做法正确吗?
最佳答案
对于如下布局,您不会通过 Id 调用查找 View :
RelativeLayout container = (RelativeLayout)getActivity().findViewById(R.layout.new_couple);
相反,您可以将其设置为内容 View ,例如:
mutuallyDialog.setContentView(R.layout.new_couple);
现在您可以在mutualDialog上通过ID调用find view来查找布局中的 View 并更改它们:
mutuallyDialog.findViewById(R.id.popup_av2).setBackground(someDrawable);
将代码更改为以下内容:
Dialog mutuallyDialog = new Dialog(getActivity());
mutuallyDialog.requestWindowFeature(android.view.Window.FEATURE_NO_TITLE);
mutuallyDialog.setContentView(R.layout.new_couple);
mutuallyDialog.findViewById(R.id.popup_av2).setBackground(someDrawable);
mutuallyDialog.show();
如果有帮助请告诉我
关于java - 我可以动态修改对话框的布局吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20376289/