是否有人拥有有关findViewById()的vArea修饰符的信息或文档?

时间:2018-10-06 20:34:12

标签: android layout

我已经看到此代码段在解决方案中用于在Android布局上设置背景图片:

因此,在讨论中,提出了一项更改建议:

RelativeLayout fondo_area = 
(RelativeLayout)findViewById(R.id.background_areas);

收件人:

RelativeLayout fondo_area = 
(RelativeLayout) vArea.findViewById(R.id.background_areas);

这似乎是我需要的解决方案,但是我似乎找不到其他任何有关此修改,其上下文或使用要求的文档或信息。

链接到我在以下位置发现的问题解答:

NullPointerException when draw background RelativeLayout

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

这绝对是一个变量。

final View vArea = li_area.inflate(R.layout.areas_detalles_cpa, null);

final表示该值无法更改。 View指示变量的类型。 vArea是变量的名称。那么=右边的所有内容都是一个表达式,其值已分配给vArea。如果您觉得这样不对,那么我再次鼓励您回去参加一些基本的Java培训,因为您可能第一次错过了一些东西。也许无非就是错误地使用了一些术语。如果有帮助,我已经使用Java进行了大约20年的开发。我说这不是在吹牛或让您失望,只是为了对我的经验水平提出一些看法,并向您保证我来自这个主题的一些知识。

关于您提到的更改可解决问题的原因。我不确定,因为我不知道到底是什么问题,也没有看过所有相关代码,但这是我的猜测。

RelativeLayout fondo_area = (RelativeLayout)findViewById(R.id.background_areas);

这会给您一个错误,指出未定义findViewbyId(或无法解决,或使用任何措辞)。这是因为该代码来自活动(Activity),该活动已定义了该方法,并且您将其粘贴到了片段(Fragment)中,而片段没有。

RelativeLayout fondo_area = (RelativeLayout) vArea.findViewById(R.id.background_areas);

现在它可以工作了,因为您要在定义该方法的findviewById上调用View。这听起来像是一个合理的解释吗?

需要注意的一点是,您可以删除对RelativeLayout的转换。借助不再需要的最新Android更新之一。我可能不确定,这可能是针对Java 7或更高版本的问题。