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