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