まず第一に、はい、このトピックに関する他のすべてのスレッドを読みました。そして、このサイトからのものだけではありません... (ほら、私は少しイライラしています)
それらのほとんどには、XML ファイルandroid:idだけでなく、使用するためのアドバイスが付属しています。idやった。
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.xmlTextViewView.findViewById
それで、私は一体何を間違っているのですか?
コメントをいただければ幸いです。