这更多是出于好奇。我有以下代码段:

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。在这种情况下,关于的注意事项也是有效的。

10-01 02:44