Прежде всего: да, я прочитал все другие темы на эту тему. И не только с этого сайта ... (видишь, я немного расстроен)
Большинство из них приходят с советами, чтобы использовать 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работал так, как предполагалось. Сюрприз: это ничего не решило.
Так какого чёрта я делаю не так?
Я буду благодарен за любые комментарии.