Я полный новичок. Собирал приложение для парсинга 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);
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый вечер, есть несколько классовКласс Face и Button имеют в себе методы paint(g)
Есть ли в java библиотеке по парсингу сложных языковых конструкцийПример какой нибудь ЯП, тот же JAVA
Из android-клиента, на сервер, передается файл в виде строки, на стороне андроид-приложения это делается как-то так: