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