这更多是出于好奇。我有以下代码段:
View mView = mInflater.inflate(R.layout.myButton, null);
ImageButton button = (ImageButton) mView.findViewById(R.id.mButton);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
...
首先,我在没有
mView
引用的情况下进行了尝试,它可以按预期工作。因此,也在developer.android.com的Buttons
部分中进行了介绍但是,使用
mView
也可以。我的问题是,真的需要引用它吗?背后的目的是什么?
为什么它同时起作用?给定用法中是否有任何缺点?
谢谢。
最佳答案
为什么它同时起作用?
如果这两种方式都起作用,那可能意味着两件事。首先,您也将myButton.xml
传递给setContentView
。在这种情况下,活动作为其视图层次结构的一部分具有ID为mButton
的视图。它可以按预期工作,但在OnClickListener
的情况下(当然),除非您将膨胀视图添加到Activity
的视图层次结构中,否则myButton.xml
的用途较少。如果您没有将setContentView
传递给ImageButton
,则意味着您有两个单独的布局,其中包含具有相同ID的相同OnClickListener
。在这种情况下,关于的注意事项也是有效的。