Android 如果我对不同布局中的多个小部件使用相同的id,会发生什么?

Android 如果我对不同布局中的多个小部件使用相同的id,会发生什么?,android,layout,Android,Layout,目前,我很小心地为每个小部件使用不同的id,但是如果我在不同的布局xml文件中为某些小部件使用相同的id,那么对findViewById的调用会发生什么情况?它是否会感到困惑,并从错误的布局文件返回小部件 我这样问是因为我想在其他一些视图中包含一个视图(带有一行按钮),然后这些屏幕类中的每一个都必须为包含的视图中的每个按钮指定稍微不同的行为。但要做到这一点,他们需要使用相同的id调用findViewById。 例如,目前我在每个文件中都这样做: final ImageButton homeBut

目前,我很小心地为每个小部件使用不同的id,但是如果我在不同的布局xml文件中为某些小部件使用相同的id,那么对findViewById的调用会发生什么情况?它是否会感到困惑,并从错误的布局文件返回小部件

我这样问是因为我想在其他一些视图中包含一个视图(带有一行按钮),然后这些屏幕类中的每一个都必须为包含的视图中的每个按钮指定稍微不同的行为。但要做到这一点,他们需要使用相同的id调用findViewById。 例如,目前我在每个文件中都这样做:

final ImageButton homeButton = (ImageButton)this.findViewById(R.id.rshome_button);
homeButton.setOnClickListener(new BottomButtonClickListener());

final ImageButton hotButton = (ImageButton)this.findViewById(R.id.rshotlist_button);
hotButton.setOnClickListener(new BottomButtonClickListener());

final ImageButton locButton = (ImageButton)this.findViewById(R.id.rsbot_map);
locButton.setOnClickListener(new BottomButtonClickListener());

final ImageButton sendButton = (ImageButton)this.findViewById(R.id.rssend_button);
sendButton.setOnClickListener(new BottomButtonClickListener());
但是我更改了每个文件中的R.id,以指向每个关联布局中的小部件。如果我能为所有人使用一个R.id就好了,这样我就不必调整每个布局文件和每个屏幕类


谢谢

只要不在同一活动中实例化这两个布局就可以了。但由于从未尝试过,我不想保证


但是,如果Android代码生成器出现错误,我也不会感到惊讶,因为它可能会尝试在R.java文件中创建两个
R.id.rshome\u按钮
条目。

这是您自己尝试的最佳方式

但是您需要设置ContentView(R.layout.your_layout)

因此,如果调用findViewById,将在您的_布局中查找具有给定id的小部件


这就是为什么您可以在不同的版面中使用相同的id。

是的,您可以在不同的版面中使用相同的
id
s。事实上,这可能是一个很好的实践。

那么它如何知道哪一个是我们正在查找的呢?R.id.view\u id是编译时生成的静态整数,在setContentView()运行之前。