まず第一に、はい、このトピックに関する他のすべてのスレッドを読みました。そして、このサイトからのものだけではありません... (ほら、私は少しイライラしています)
それらのほとんどには、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.xml
TextView
View.findViewById
それで、私は一体何を間違っているのですか?
コメントをいただければ幸いです。