Мучает ошибка Attempt to invoke virtual method on a null object reference

559
19 июня 2017, 19:41

Я полный новичок. Собирал приложение для парсинга JSON с помощью библиотеки Volley.

При запуске приложения на смартфоне выдаёт ошибку:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.countinfo.countryinfotestapp/com.countinfo.countryinfotestapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.toolbox.ImageLoader com.countinfo.countryinfotestapp.AppController.getmImageLoader()' on a null object reference

Что я пропустил?

Прилагаю код:

MainActivity

public class MainActivity extends AppCompatActivity {
    private static final String url = "https://restcountries.eu/rest/v2/all";
    private ProgressDialog dialog;
    private List<Item> array = new ArrayList<Item>();
    private ListView listView;
    private Adapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.list_item);
        adapter=new Adapter(this,array);
        listView.setAdapter(adapter);
        dialog=new ProgressDialog(this);
        dialog.setMessage("Loading...");
        dialog.show();

        JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                hideDialog();
                for(int i=0;i<response.length();i++){
                    try{
                        JSONObject obj=response.getJSONObject(i);
                        Item item=new Item();
                        item.setName(obj.getString("name"));
                        item.setImage(obj.getString("image"));
                        item.setCapital(obj.getString("capital"));
                        array.add(item);
                    }catch(JSONException ex){
                        ex.printStackTrace();
                    }
                }
                adapter.notifyDataSetChanged();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            }
        });
        AppController.getmInstance().addToRequesQueue(jsonArrayRequest);
    }
    public void hideDialog(){
        if(dialog !=null){
            dialog.dismiss();
            dialog=null;
        }
    }
}

App.Controller

public class AppController extends Application {
    public static final String TAG= AppController.class.getSimpleName();
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;
    private static AppController mInstance;
    @Override
    public void onCreate() {
        super.onCreate();
        mInstance=this;
    }
    public static synchronized AppController getmInstance(){
        return mInstance;
    }
    public RequestQueue getmRequestQueue() {
        if(mRequestQueue==null){
            mRequestQueue= Volley.newRequestQueue(getApplicationContext());
        }
        return mRequestQueue;
    }
    public ImageLoader getmImageLoader(){
        getmRequestQueue();
        if(mImageLoader==null){
            mImageLoader=new ImageLoader(this.mRequestQueue,new BitmapCache());
        }
        return this.mImageLoader;
    }
    public <T> void addToRequesQueue(Request<T> request,String tag){
        request.setTag((TextUtils.isEmpty(tag) ? TAG : tag));
        getmRequestQueue().add(request);
    }
    public <T> void addToRequesQueue(Request<T> request){
        request.setTag(TAG);
        getmRequestQueue().add(request);
    }
    public void cancelPendingRequest(Object tag){
        if(mRequestQueue !=null){
            mRequestQueue.cancelAll(tag);
        }
    }
}
READ ALSO
Архитектура java-проекта [требует правки]

Архитектура java-проекта [требует правки]

Добрый вечер, есть несколько классовКласс Face и Button имеют в себе методы paint(g)

199
Ищу библиотеку

Ищу библиотеку

Есть ли в java библиотеке по парсингу сложных языковых конструкцийПример какой нибудь ЯП, тот же JAVA

235
Проблема с областью видимости

Проблема с областью видимости

Ошибка: button cannot be resolved

247
Возможно ли слепить файл изображения из строки переданной в запросе?

Возможно ли слепить файл изображения из строки переданной в запросе?

Из android-клиента, на сервер, передается файл в виде строки, на стороне андроид-приложения это делается как-то так:

208