首先:是的,我阅读了有关该主题的所有其他主题。不仅是这个网站上的网站...(您看到的,我有些沮丧)
它们中的大多数都带有建议,android:id
而不是仅id
在XML文件中使用。是的
我从其他人那里了解到,该方法与的View.findViewById
工作原理有所不同Activity.findViewById
。我也处理了。
在我的中location_layout.xml
,我使用:
<FrameLayout .... >
<some.package.MyCustomView ... />
<LinearLayout ... >
<TextView ...
android:id="@+id/txtLat" />
...
</LinearLayout>
</FrameLayout>
在我的活动中,我这样做:
...
setContentView( R.layout.location_layout );
在我的自定义视图类中:
...
TextView tv = (TextView) findViewById( R.id.txtLat );
返回null
。这样做,我的活动效果很好。所以也许是由于Activity.findViewById
和的View.findViewById
差异。因此,我将传递给上下文的上下文存储在本地的海关视图构造函数中并尝试:
...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );
这也回来了null
。
然后,我改变了我的自定义视图扩展ViewGroup
,而不是View
和改变location_layout.xml
让TextView
我的自定义视图的直接子,从而使View.findViewById
应该工作的设想。惊喜:它什么都没解决。
那么,我到底在做什么错呢?
我将不胜感激。