게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
아까 객체화된 인스턴스변수 상속에관한 다시 질문글입니다.
게시물ID : programmer_2333짧은주소 복사하기
작성자 : ducking
추천 : 0
조회수 : 628회
댓글수 : 1개
등록시간 : 2014/04/02 21:57:55
옵션
  • 베스트금지
밑에 비슷한내용글은 친구아이디로 올렸던글입니다.
우선 소스코드코드부터 좀올릴게요 길어서 죄송합니다.

위의 해당 스레드는 블루투스 쳇어플에서 가져온 클래스파일입니다. 소켓을 스레드화시킨다음 그클래스안에서 write메소드와 read 메소드를 이용 

해 main엑티비티에서 블루투스 통신을 하게합니다. 실제로 main엑티비티에서 블루투스 통신 잘되구요.

메인엑티비티에서 저위의 클래스를 인스턴스화 시킨 소스입니다.
bluetoothchatservice의 생성자에 들어가는 인자는 context와 handler구요.

이런식으로 main엑티비티에서 통신은잘됩니다. 문제는 통신을이용해 A엑티비티를 호출하면 문제가됩니다. 핸들러 자체가 main엑티비티에 있으므로

데이터가 수신되면 자동으로 A엑티비티에있는 스레드로 보내주는 소스를짜서 A엑티비티에서의 수신은 잘되는데 송신이문제입니다.

송신자체는 A엑티비티에서 main엑티비티에있는 mChatservice를 통해 bluetoothchatservice 클래스내에있는 write메소드를 사용하려합니다.
(실제 메인엑티비티에서 mChatservice.write(send data); 식으로 송신했습니다.)
A엑티비티에서 main엑티비티를 상속받아서 그대로 위의 명령어를 쓰면 nullpointerexception이 뜹니다. 지난번 질문글에서

또 bluetoothchatservice 에서 msate 라는변수로 연결상태를 체크하는데

main클레스에서 송수신을할때는 msate변수가 연결된상태로 체크되는데 상속하거나 따로 A엑티비티에서 main  b = new main();

b.mchatservice(send); 명령어를 보내면 mstate변수가 연결해제된상태로 뜹니다. A엑티비티에서 접근한 인스턴스변수와 main

엑티비티 자체에서 생성한 인스턴스변수가 다르다는거같습니다.


요약하자면 main ->mchatservice 인스턴스변수를 이용 ->bluetoothchat  클래스 연결시 블루투스 문자송수신 잘됨

A엑티비티 ->b->main엑티비티 ->mchatservice 형식으로 bluetoothchat  클래스를 접근할시 main에서 접근한 인스턴스변수와 다름

제가 java서적을 찾아봐도 아직 실력이부족해서 무엇이 문제인지 잘모르겠네요.

질문글이너무지저분해서 죄송합니다. 문제시 삭제하겠습니다 .
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호