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