2015-09-04 29 views
-3

我使用retrofit android库进行其他api调用。我实现了作为RESTClient实现一个单独的类如下改造Android使错误java.lang.NullPointerException:尝试调用接口方法

RestClient.java

public class RestClient { 

    private static Api REST_CLIENT; 
    private static String BASE_URL = "base_url"; 

    public RestClient() {} 

    public static Api getInstance() { 
     if (REST_CLIENT != null) { 
      setupRestClient(); 

     } 
     return REST_CLIENT; 
    } 


    private static void setupRestClient() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(BASE_URL) 
       .build(); 
     REST_CLIENT = restAdapter.create(Api.class); 
    } 
} 

然后调用使用

Api api = RestClient.getInstance(); 
    api.getLoginResponse(usernameText, passwordText, android_id, new Callback<LoginResponse>() { 
         @Override 
         public void success(LoginResponse loginResponse, Response response) { 
          Toast.makeText(getApplicationContext(), loginResponse.getToken(), Toast.LENGTH_SHORT).show(); 
         } 

         @Override 
         public void failure(RetrofitError error) { 

         } 
        }); 

API,但,当我调试实例值api总是空,并得到java.lang.NullPointerException:试图调用logcat中的接口方法错误

+0

我相信,如果条件是在'getInstance'方法落后:'如果(REST_CLIENT!= NULL)'意味着如果'REST_CLIENT'已经初始化代码将只运行,否则,你回来正如我们所讨论的那样,REST_CLIENT'总是'null'。 –

+0

[Retrofit android not working and has no error]可能的重复(http://stackoverflow.com/questions/32389584/retrofit-android-not-working-and-has-no-error) –

回答

2

如果getInstance()方法中的条件错误。请检查一下。

public class RestClient { 

    private static Api REST_CLIENT; 
    private static String BASE_URL = "base_url"; 

    public RestClient() {} 

    public static Api getInstance() { 
     if (REST_CLIENT == null) { 
      setupRestClient(); 

     } 
     return REST_CLIENT; 
    } 


    private static void setupRestClient() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(BASE_URL) 
       .build(); 
      REST_CLIENT = restAdapter.create(Api.class); 
     } 
    } 
相关问题