public View inflate(int Resourece,ViewGroup root)
reSource:View的layout的ID
root: 生成的层次结构的根视图
return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。mail.xml文件里的层次结构是这样的
<LinearLayout android:id="@+id/LinearLayout01" />
      <TextView android:id="@+id/tv1" />
       <LinearLayout android:id="@+id/LinearLayout02" />
                 <TextView android:id="@+id/tv2" />如果我使用函数
View view = inflate.inflate(R.layout.main,(ViewGroup)findViewById(R.id.LinearLayout02));
这样是不是LinearLayout02就对应成了根视图,使用view.findViewById就找不到id为tv1的TextView了呢。我试了一下其实不是这样的,还是可以找到的。inflate这个函数的第二个参数设置到底有什么用呢

解决方案 »

  1.   

    第二个参数,你让你实例化后的view是这个viewgroup的子view
      

  2.   

    View view = inflate.inflate(R.layout.main,(ViewGroup)findViewById(R.id.LinearLayout02));你这样第二个参数是null所以view就是一个独立的不依附在任何一个groupview下面。
      

  3.   

    那样写第二个参数怎么会是空呢XML里有LinearLayout02的,怎么才能是不空的呢,能不能举个例子呢
      

  4.   

    那是因为你从当前视图去找的,你当前视图都没生成,当然找不到了。setContentView(view)后,当前的activity才有视图,你那代码里实际上是从 view里面找的。
    View view = inflate.inflate(R.layout.main,null)
     setContentView(View);
    View new= inflate.inflate(R.layout.main,(ViewGroup)findViewById(R.id.LinearLayout02))这样才能不为null.
      

  5.   


    哦,对的,
    View new= inflate.inflate(R.layout.main,(ViewGroup)findViewById(R.id.LinearLayout02))
    但是我后来程序又写tx1 = (TextView)view2.findViewById(R.id.tv1)
    还是可以找到,可是tx1是不在LinearLayout02下面的是在LinearLayout01下面的
      

  6.   

    那不应该吧View findViewById函数应该只找child的吧,tv1不是他的child
      

  7.   


    <LinearLayout android:id="@+id/LinearLayout01" />
      <TextView android:id="@+id/tv1" />
      <LinearLayout android:id="@+id/LinearLayout02" />
      <TextView android:id="@+id/tv2" />你几个布局都是并列的关系,没有父子层级关系,你把tv1放到LinearLayout01里面再试试看能不能获取到。
      

  8.   

     inflate(int Resourece,ViewGroup root)他们的关系?
      

  9.   

     inflate(int Resourece,ViewGroup root)?