解决方案 »

  1.   

    我的理解是setContentView的时候,系统就已经初始化好这些控件view了,find过程只是一个关联引用下你指定id的view而已
      

  2.   


    的确是的。当然还有adapter里的,fragment里的。。这些都是在infalter的时候创建的对像。
      

  3.   

    楼主真是个好学的人,应该是findviewbyid里会new,或者如一楼所说的
      

  4.   

    我也很疑惑啊。最近看到一段代码。
    先声明了一个btn类对象btn,
    然后btn = FindViewById(id1),再给btn绑定了一个按键监听函数。
    然后又btn=FindViewById(id2),再给btn绑定了另外一个监听函数。
    如此反复的给xml里面的4个按钮绑定了格子的按键响应函数。
    居然还可以各自响应各自的按键动作。我一下就凌乱了。-----------------------------------------
    搜了一大通。发现如果你用c++的语法去理解。这里是无法理解的。要用java的语法。
    java中这里的btn并不是一个实例化的对象。只不过是一个对象的引用变量名,(相当于c++中的类指针)。
    id1、di2对应的button1和botton2分别被android通过xml获取信息,创建好,FindViewById()可以返回对应对象的地址。btn = FindViewById(id1)。btn指向对应的botton1。
      

  5.   

    View中的构造方法:里面有TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.View,
                    defStyle, 0);
     int attr = a.getIndex(i);
                switch (attr) {
                    case com.android.internal.R.styleable.View_id:
                        mID = a.getResourceId(attr, NO_ID);
                        break;
    }
    mID这个全局变量就是R中的static final的那个id吧
    我在源码中分析的