ConditonA:
//declare mybutton object and point to null;
Button mybutton ;
//mybutton point to the instance of layout_button
mybutton = (Button)findViewByid(R.id.layout_button);
CondtionB:
//declare mybutton object and point to new Button object;
Button mybutton = new Button(this);
//mybutton repoint to the instance of layout_button
mybutton = (Button)findViewByid(R.id.layout_button);
// previous new Button(this) should be recycle??
大家好 如上例所示,我发现许多示例代码使用条件B,但我不知道它的好处是什么。它应该导致垃圾???
答案 0 :(得分:2)
在活动中调用时,“this”提供当前上下文,因此它与执行相同:
Button = new Button(getContext());
当您从头开始创建按钮时,可以使用此构造函数。但是,如果您已经在XML中声明了按钮,则可以使用findViewByid(R.id.my_button_id_here)
代替,这将找到已在XML中定义的按钮。因此,在您的第二个示例中,您不需要new Button(this)
,因为它被下一行中的findViewByid
语句覆盖。
Here您可以看到Android仅将findViewByid
用于XML中定义的按钮。
Here您可以看到如何使用上下文构造函数创建未在XML中定义的按钮。