如果我在不同的布局中为几个小部件使用相同的ID,会发生什么?

los*_*aby 6 layout android

目前我小心翼翼地为每个小部件使用不同的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());
Run Code Online (Sandbox Code Playgroud)

但是我将每个文件中的R.id更改为指向每个关联布局中的窗口小部件.如果我可以使用一个R.id,那将是很好的,所以我不必调整每个布局文件和每个屏幕类.

谢谢

jam*_*esh 8

是的,您可以id在不同的布局中使用相同的s.事实上,这可能是一个好习惯.


mxc*_*xcl 3

只要您不在同一活动中实例化两种布局就应该没问题。但由于从未尝试过,我不想保证它。

不过,如果 Android 代码生成器出错,我也不会感到惊讶,因为它可能会尝试在R.javaR.id.rshome_button文件中创建两个条目。