우선 : 예,이 주제에 대한 다른 모든 스레드를 읽습니다. 그리고이 사이트의 사람들뿐만 아니라 ... (알다시피 조금 실망합니다)
그들 대부분은 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
예상대로 작동하도록했습니다. Suprise : 아무것도 해결하지 못했습니다.
도대체 내가 뭘 잘못하고 있니?
의견을 보내 주셔서 감사합니다.