似乎我发现在不同的Activity中建立同id的控件
在R.java中只会出现一个。
那么在使用findViewById方法的时候  R.id.xxx是不是默认就是只去当前activity中的那个控件?
这样严谨嘛?

解决方案 »

  1.   

    可行是可行,但是我觉得也不是很好,如果一个Activity应用了两个布局文件,那这两个布局文件中就不应该有相同ID的view(即使他们不会同时出现)
      

  2.   

    应该根据你 findViewById 前面的 那个 ViewGroup 有关系的
      

  3.   

    这是一个折中的办法,而且也是在这种应用场景中唯一可行的办法。
    因为如果同一个ID可以对应不同的R.id,那在ID转R.id的时候又该选哪一个,这肯定要增加不必要的逻辑,而且没有额外收益。即便同一个布局文件,里面的控件也是可以取相同的ID的,至于如何区分不同的控件,这可以通过布局的层级关系来确定。如果程序员真的希望它们的R.id是不一样的,那最简单的办法就是把ID取的不一样
      

  4.   

    创建Activity的时候会去读取setContentView(R.layout.xxx.xml);
    这个时候view指向的是xxx.xml
    所以系统会在xxx.xml下面去找这个id的资源文件。
    如果你不写setContentView(R.layout.xxx.xml);这行代码是找不到的。