2016-09-08 4 views
0

서버에 연결하는 동안 문제가 발생했습니다. java.lang.NullPointerException이 : 나는에 의한 진짜 문제null 객체 참조에서 가상 메소드 ~ ApplicationController.buildNetworkService (java.lang.String, int) '호출 시도

무엇인지 잘 모릅니다이 오류 메시지 양식의 로그 캣 있어 '무효 org.androidtown.myjsgexample.ApplicationController.buildNetworkService을 가상 메서드 호출을 시도합니다 (자바 org.androidtown.myjsgexample.MainActivity.onCreate에서 널 객체 참조 에 .lang.String, INT) '(MainActivity.java:34)는

public class ApplicationController extends Application{ 

    private static ApplicationController instance; 
    // 메소드 만들었네 getInstance 
    public static ApplicationController getInstance() { 
     return instance; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     ApplicationController.instance = this; // 어플리케이션 처음 실행될때 instance생성 
    } 

    private NetworkService networkService; 
    public NetworkService getNetworkService(){ 
     return networkService; 
    } 

    private String baseUrl; 

    public void buildNetworkService(String ip, int port){ 
     synchronized (ApplicationController.class){ 

      if(networkService == null){ 
       baseUrl = String.format("http://simon-prac1.herokuapp.com/",ip, port); 
       Gson gson = new GsonBuilder().create(); 

       GsonConverterFactory factory = GsonConverterFactory.create(gson); 
       //서버에서 json형식으로 데이터를 보내고 이를 파싱해서 받아오기 위함 

       Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(factory).build(); 
       networkService = retrofit.create(NetworkService.class); 

      } 
     } 
    } 


} 

이 MainActivity의 라인 (34)의 소스이다.

ApplicationController application = ApplicationController. getInstance(); 
    application.buildNetworkService("127.0.0.1",3306); 
    networkService = ApplicationController.getInstance().getNetworkService(); 

이것은 NetworkService 인터페이스입니다.

public interface NetworkService { 

    @POST("/PersonalData") 
    Call<PersonalData> post_personalData(@Body PersonalData personalData); 

/* 
    @GET("/PersonalData") 
    Call<List<PersonalData>> getAllData(); 
*/ 

    @GET("/PersonalData/{name}") 
    Call<PersonalData> getNamePersonalData(@Path("name")String name); 


} 

오류 내용

09-08 03:17:46.059 4244-4244/org.androidtown.myjsgexample E/AndroidRuntime: FATAL EXCEPTION: main 
Process: org.androidtown.myjsgexample, PID: 4244 
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.androidtown.myjsgexample/org.androidtown.myjsgexample.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.androidtown.myjsgexample.ApplicationController.buildNetworkService(java.lang.String, int)' on a null object reference 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.androidtown.myjsgexample.ApplicationController.buildNetworkService(java.lang.String, int)' on a null object reference 
at org.androidtown.myjsgexample.MainActivity.onCreate(MainActivity.java:34) 
at android.app.Activity.performCreate(Activity.java:6237) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
at android.app.ActivityThread.-wrap11(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

도움을 내게주세요!

+0

당신은 일을 시도 할 수'개인 정적와 ApplicationController 인스턴스 = 새와 ApplicationController();'대신'onCreate'에 초기화? –

답변

0

null의 경우 application을 확인하십시오.

그리고 당신의 CustomApplication의 엔트리 포인트 (귀하의 경우에와 ApplicationController)를 사용 manifest.xml 확인은

관련 문제