2017-07-25 16 views
-1

我有以下的單身網絡單與Android的改造 - 空引用異常

public class APIShared { 

    public String API_BASE_URL = "http://url.com/"; 
    public static APIShared instance; 
    public APIManager client; 

    private Context context; 
    private Retrofit retrofit; 

    private APIShared (Context context) { 

     this.context = context; 

     retrofit = new Retrofit.Builder() 
       .baseUrl(API_BASE_URL) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

     client = retrofit.create(APIManager.class); 

    } 

    public static APIShared init(Context context){ 

     if (null == instance){ 
      instance = new APIShared(context); 
     } 
     return instance; 
    } 
} 

,並在我的MainActivityonCreate我打電話

Call<List<Category>> call = APIShared.instance.client.categories(); 

當我啓動應用程序,我得到

java.lang.NullPointerException:嘗試從字段'com.example.me.fooder.APIManager com.examp le.me.fooder.APIShared.client'上的空對象引用

我在做什麼錯?

回答

1

你搞砸了單身模式。實例應該是私有靜態的。 init()通常被命名爲getInstance(儘管這不是必需的),並且是訪問實例的唯一方法。你的調用看起來像:APIShared.init()。client.categories();