【问题标题】:Can I dynamically modify layout of a Dialog?我可以动态修改对话框的布局吗?
【发布时间】:2013-12-04 13:10:44
【问题描述】:

我正试图在这段代码中摆脱 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,带有一些文本和 ImageViews popup_av1 和 popup_av2。

我想要实现的是能够在显示对话框之前更改这两个 ImageViews src,但由于某种原因,上面的代码无法正常工作。这种方法正确吗?

【问题讨论】:

    标签: java android android-layout dialog


    【解决方案1】:

    对于以下布局,您不会按 ID 调用查找视图:

    RelativeLayout container = (RelativeLayout)getActivity().findViewById(R.layout.new_couple);
    

    相反,您可以将其设置为内容视图,例如:

    mutuallyDialog.setContentView(R.layout.new_couple);
    

    现在您可以在mutualDialog 上按ID 调用find 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();
    

    如果有帮助请告诉我

    【讨论】:

    • 这是正确的,我也将它与 Universal Image Loader 结合使用,它就像一个魅力。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2011-10-19
    • 2023-03-23
    相关资源
    最近更新 更多