项目中有一个布局,分为top,middle,bottom三部分,其中middle部分用来显示内容,里面有一些点击,可以跳转不同的activity,现在要在这其中的某些activity访问top中的控件,用findViewById(R.id.top中的控件id),编译不报错,运行时报空指针,除非用getParent().findViewById(R.id.top中的控件id)才可以,但前提是在middle的第一层子activity里面这样用才可以,如果第二层,就要加两个getParent才行,因为可能有多层activity,我不想通过这种方法,不知有什么好方法可以不管多少层都能直接在middle的子Activity中访问到top中的控件?

解决方案 »

  1.   

    首先、findViewById是相对于inflate的view而言的,因此不同的activity,如果没有inflate其他xml布局文件,直接通过findViewById去查找某个控件,如果该id有没有在这个activity的view里面就会报空指针;其次、不要直接在middle的子activity中直接访问top中控件,简单点可以只通过getParent去调用相应的方法,多层嵌套的情况可以考虑用广播去实现。
      

  2.   

    还有出现多层嵌套的情况,建议LZ改成用一个activity去控制不同view的切换显示。
      

  3.   

    在每个xml中都include top和bottom就可以直接使用findViewById