내가 모바일로해서 질문글을 개떡같이올려서 화난건지 답변이안달리네 ㅠㅠ 컴퓨터로왔으니 다시 재대로 질문글써봄
안드로이드에서 블루투스를 구현했어. 블루투스쳇어플에있는 공용클래스들을 빼와서 사용했고. main 에서 핸들러를 이용
bluetoothchatservice(소켓연결과 커넥트 커넥티드스레드(wirte read 메소드포함된)기능을하는 클래스) 를 호출해서 블루투스를 연결하고
다른 마이크로컨트롤로 유닛과 연결하고 통신하는데에도 성공했음
그런데 문제는 여기서부터야 형들.
main 문에서는 bluetoothchatservice mChatservice = new bluetoothchatservice(mHandler) 로 객체화 시켜서 호출했고 실제로 main엑티비티에서는
bluetoothservice 클래스내에있는 read write 메소드를이용해 데이터를 읽고쓰는것까진 가능하나
여기서 A엑티비티를 호출한후 main에있는 mChatservice 변수를 이용 read write 기능을 구현하려고했는대 잘안되더라고.
public class A extends main 으로 main 엑티비티를 상속받아 mChatservice 변수를 써보았는데 이렇게하면 main문에서는 해당write메소드내에있는
(main.mchatservice.write(send)이런식으로)
로그값(동작되나안되나 한번테스트해볼라고넣었어) 이 잘돌아가는데 A엑티비티가 main을상속받아서 위에있는코드처럼사용하면 로그값이 아예안읽혀
상속이안되서 그런가 해서 상속안하고 A엑티비티내에 main main = new main() 객체를
생성해서 main.mChatservice.write(바이트 x); 로호출하면 널포인터가뜨더라고
혹시내가 놓친문제가 뭔지 알수있을까 형들 ㅠㅠ? java에관한지식이부족해서 이리저리 책찾아보는데 아직감이안잡혀서.. 일단 밑에 이미지로
개떡같긴하지만 블록도한번올려볼게 라고하고 올릴라고했는데 업로드서버가안되서 안올라가지네 미안;;
Application 클래스에 mChatService 필드변수가 있어야 할거 같은데. 어떤 액티비티에서건 접근가능해야 하니까
http://arabiannight.tistory.com/m/post/316
답변고마워 형 근대 mchatservice 변수는 main클레스에서 bluetoothchat이란 소켓하고 커넥션스레드만있는 클래스연결해주는 인스턴스 변수같은건데 그걸 application 클래스에 올리면 모든엑티비티에서 그변수에 접근가능하다 그말이지? 한번해볼게 ㅎㅎ 고마웡
다만 스레드 역할을 헷갈리면 익셉션 뜨니 주의해야 할듯
내가 형이링크해준거 읽어보니 getapplication 클래스만들고 메니페스트파일에다 추가하면 거기에 브로드캐스터건 컨텐츠프로바이더건 엑티비티건 접근할수 있다 그소린대 지금 mchatservice가 메인내에서 만든 인스턴스변수이고 그걸 메인엑티비티에 있는 핸들러로 객체화시켰어 아.. 소스파일을 못보여준ㄴ게 되게아쉽네.. 지금 형말대로하면 내가만든 mChatservice 인스턴스변수를 application 클래스에 다시 객체화시켜야하는건데 애초부터 지금 다른클래스에 mchatservice를 받을려고하는게 안되서그래.. 상속을하면 명령어가 들어가긴하는데 실제로 mchatservice.write 메소드내에있는 log값이안찍히고 main.mchatservice.wirte 메소드를 객체화시켜서쓰면 널포인터가들어가더라