1

I have this code,problem with two fields,I dont know what to do,my MainActivity class and logcat below:

public class MainActivity extends ListActivity {
private Context context;

    Intent intent;
    private static String url = "https://fierce-citadel-4259.herokuapp.com/hamsters";
    private static final String TITLE = "title";
    private static final String DESCRIPTION = "description";
    private static final String IMAGE = "image";
    ArrayList<HashMap<String,String>> jsonlist = new ArrayList<HashMap<String, String>>();
   ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new ProgressTask(MainActivity.this).execute();



    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    private class ProgressTask extends AsyncTask<String,Void,Boolean> {
        private ProgressDialog dialog;
        private ListActivity activity;
        public ProgressTask(MainActivity activity) {
            this.activity = activity;
            context = activity;
            dialog = new ProgressDialog(context);
        }
private Context context;
        protected void onPreExecute(){
           this.dialog.setMessage("Progress start");
           this.dialog.show();
        }
        protected void onPostExecute(final Boolean success){
            try{
       if((this.dialog != null)&& this.dialog.isShowing()){
this.dialog.dismiss();
            }
            CustomListAdapter adapter =  new CustomListAdapter(MainActivity.this,jsonlist, R.layout.list_item,new String[]{TITLE,DESCRIPTION},new int[]{R.id.title,R.id.description});

setListAdapter(adapter);


        }catch (final IllegalArgumentException e){e.printStackTrace();}
        }
        protected Boolean doInBackground(String... args) {
           JSONParser jParser = new JSONParser();
            JSONArray json = jParser.getJSONFromUrl(url);
            for(int i =0;i<json.length();i++) {
                try {
                    JSONObject c = json.getJSONObject(i);
                    String vtitle = c.getString(TITLE);
                    String vdescription = c.getString(DESCRIPTION);
                    String vimage = c.getString(IMAGE);
                    HashMap<String, String> map = new HashMap<>();
                    map.put(TITLE, vtitle);
                    map.put(DESCRIPTION, vdescription);
map.put(IMAGE, vimage);
                    jsonlist.add(map);

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            return null;
        }
    }


}

and porblem with this: new ProgressTask(MainActivity.this).execute();(onCreate) and this: this.dialog.show();(in OnPreExecute) this in LogCat:

09-20 19:07:34.141  29133-29155/com.example.vnvbnv.myapplication E/JSON PARSER﹕ Error parsing dataorg.json.JSONException: End of input at character 0 of
09-20 19:07:34.141  29133-29155/com.example.vnvbnv.myapplication W/dalvikvm﹕ threadid=11: thread exiting with uncaught exception (group=0x40d98ba0)
09-20 19:07:34.151  29133-29155/com.example.vnvbnv.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:299)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
            at java.util.concurrent.FutureTask.run(FutureTask.java:239)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:864)
     Caused by: java.lang.NullPointerException
            at com.example.vnvbnv.myapplication.MainActivity$ProgressTask.doInBackground(MainActivity.java:116)
            at com.example.vnvbnv.myapplication.MainActivity$ProgressTask.doInBackground(MainActivity.java:88)
            at android.os.AsyncTask$2.call(AsyncTask.java:287)
            at java.util.concurrent.FutureTask.run(FutureTask.java:234)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:864)
09-20 19:07:34.441  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x54a42000 size:307200
09-20 19:07:34.441  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x40848000 size:4096
09-20 19:07:34.441  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x54e49000 size:307200
09-20 19:07:34.441  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x49151000 size:4096
09-20 19:07:34.441  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x5501b000 size:307200
09-20 19:07:34.441  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x50cd7000 size:4096
09-20 19:07:34.471  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x54bd2000 size:1536000
09-20 19:07:34.471  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x4091c000 size:4096
09-20 19:07:34.471  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x54e94000 size:1536000
09-20 19:07:34.471  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x5040d000 size:4096
09-20 19:07:34.471  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x55066000 size:1536000
09-20 19:07:34.471  29133-29133/com.example.vnvbnv.myapplication D/qdmemalloc﹕ ion: Unmapping buffer  base:0x50ce6000 size:4096
09-20 19:07:34.501  29133-29133/com.example.vnvbnv.myapplication E/WindowManager﹕ Activity com.example.vnvbnv.myapplication.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{411b2020 V.E..... R......D 0,0-456,144} that was originally added here
    android.view.WindowLeaked: Activity com.example.vnvbnv.myapplication.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{411b2020 V.E..... R......D 0,0-456,144} that was originally added here
            at android.view.ViewRootImpl.<init>(ViewRootImpl.java:458)
            at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216)
            at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
            at android.app.Dialog.show(Dialog.java:286)
            at com.example.vnvbnv.myapplication.MainActivity$ProgressTask.onPreExecute(MainActivity.java:99)
            at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
            at android.os.AsyncTask.execute(AsyncTask.java:534)
            at com.example.vnvbnv.myapplication.MainActivity.onCreate(MainActivity.java:47)
            at android.app.Activity.performCreate(Activity.java:5165)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
            at android.app.ActivityThread.access$600(ActivityThread.java:162)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:158)
            at android.app.ActivityThread.main(ActivityThread.java:5751)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
            at dalvik.system.NativeStart.main(Native Method)
09-20 19:07:37.294  29133-29155/com.example.vnvbnv.myapplication D/Process﹕ killProcess, pid=29133
09-20 19:07:37.294  29133-29155/com.example.vnvbnv.myapplication D/Process﹕ dalvik.system.VMStack.getThreadStackTrace(Native Method)
09-20 19:07:37.294  29133-29155/com.example.vnvbnv.myapplication D/Process﹕ java.lang.Thread.getStackTrace(Thread.java:599)
09-20 19:07:37.294  29133-29155/com.example.vnvbnv.myapplication D/Process﹕ android.os.Process.killProcess(Process.java:1004)
09-20 19:07:37.294  29133-29155/com.example.vnvbnv.myapplication D/Process﹕ com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:123)
09-20 19:07:37.294  29133-29155/com.example.vnvbnv.myapplication D/Process﹕ java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
09-20 19:07:37.294  29133-29155/com.example.vnvbnv.myapplication D/Process﹕ java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)

1 Answers1

0

I think you put this wrong

private class ProgressTask extends AsyncTask<String,Void,Boolean> {
    private ProgressDialog dialog;
    private ListActivity activity;
    public ProgressTask(MainActivity activity) {
        this.activity = activity;
        context = activity;
        dialog = new ProgressDialog(context);
    }
    private Context context; //<------- 

Since you are saying that context = activity; you have to declare it before as :

 private class ProgressTask extends AsyncTask<String,Void,Boolean> {
    private ProgressDialog dialog;
    private ListActivity activity;
    private Context context; //<------- 
    public ProgressTask(MainActivity activity) {
        this.activity = activity;
        context = activity;
        dialog = new ProgressDialog(context);
    }
Skizo-ozᴉʞS ツ
  • 19,464
  • 18
  • 81
  • 148