한 Activity내에서 여러 클래스를 사용 할 때, 한 클래스에서 다른 클래스의 함수를 불러다 쓸 때 에러가 납니다.

문의.jpg


기본 구조는 위와 같은데요.
main만 Activity 형식이구요 main 에는 좌측 버튼이 있고, 우측 페이지를 컨트롤 할 수 있도록 만들었습니다.
우측페이지는 좌측 버튼이 누르는 것에 따라 변경이 되고, 각각 class로 만들고 각자 xml이 존재 합니다.
버튼은 항상 보이고, 1을 누르면, 오른쪽에 one에 해당 하는 페이지가 보이고, 2를 누르면 우측에 two에 해당하는 페이지가 보이는 방식입니다.

main.java (main.xml)   메인 버튼, 우측 페이지 컨트롤
   one.java (one.xml)   1 페이지
   two.java (two.xml)   2 페이지
   three.java (three.xml)   3 페이지
   four.java (four.xml)   4 페이지
      list.java(list.xml)

이런 형식으로 되있구요. 마지막 list는 adapter 형식으로 만들어서 우측 페이지에서 리스트를 만들때 가져다가 사용합니다.
버튼을 누르면 해당 페이지를 보여주는 것 까지는 잘 동작합니다.
여기서 기능을 좀 더 추가하려고 하는데 현재 1페이지를 보고 있다가  11에 해당하는 리스트를 누르면 1 페이지로 이동하고, 12를 누르면 2페이지로, 13을 누르면 3페이지를 보여주는 기능을 구현 하려고 합니다...
리스트를 누르면 실행하는 부분은 잘 동작 하는 것을 확인했습니다..

문제는 리스트를 눌러서 실행하는 부분은 one.java 파일에 있고, 페이지 컨트롤 함수가 main.java 에 있어서 호출해서 사용할때 문제가 발생하여 실행이 될때 에러가 납니다.
즉, main.java에 있는 change() 함수를 one.java에서 작성한 클래스에서 호출하여 사용을 할 때 문제가 생깁니다.
제가 생각하기에 문제는 메모리가 공유가 안돼서 one에서 change() 함수를 호출하면 이미 만들어져있는 것을 쓰는게 아니라 새로운 값을 만들어서 값이 공유가 안돼기에 생기는 듯 합니다.
즉, 디버그를 해보면 main 이 실행되었으므로 a= 1로 값이 설정되어있었는데, 외부에서 호출하면 a 값이 null 값을 가지고 있습니다.
그래서 변수 a를 static 으로 선언을 하면 정상적으로 동작을합니다만, 이렇게 되면 변수나 함수나 모두 static으로 바꾸어야 하는데, 다른 방법은 없는지 궁금합니다.
다른 클래스에서 함수를 호출할 때, 사용해본 방식은 extends Main 도 해보고, 메인 페이지를 import 도 해봤고, Main m_main;을 선언해서도 사용해봤는데 매번 에러가 납니다.

버전은 1.6을 사용중이구요, 에러 메세지 추가 합니다.
12-18 17:27:03.702: ERROR/AndroidRuntime(1180): Uncaught handler: thread main exiting due to uncaught exception
12-18 17:27:03.712: ERROR/AndroidRuntime(1180): java.lang.NullPointerException
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at com.btb.pmsvc.PMService.changePage(PMService.java:220)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at com.btb.MyPage.MyPage.onItemClick(MyPage.java:127)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at android.widget.ListView.performItemClick(ListView.java:3246)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:1635)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at android.os.Handler.handleCallback(Handler.java:587)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at android.os.Looper.loop(Looper.java:123)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at android.app.ActivityThread.main(ActivityThread.java:4203)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at java.lang.reflect.Method.invokeNative(Native Method)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at java.lang.reflect.Method.invoke(Method.java:521)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
12-18 17:27:03.712: ERROR/AndroidRuntime(1180):     at dalvik.system.NativeStart.main(Native Method)

자세하게 설명한다고 했는데 더 알수없게 복잡하게 설명해 놓은 것 같네요..
공지사항 읽어 보았습니다.