I am getting this NullPointerException from the code that I got online for plotting a line graph using JSON.problem is I am an absolute beginner to android and I couldn't fix it please help. the code is as follow
JSON file
{
  "id": 1,
  "coffee": [
    {
      "Date": "18:25:43",
      "Estimate": 25.4
    },
    {
      "Date": "18:35:43",
      "Estimate": 27.3
    },
    {
      "Date": "18:45:21",
      "Estimate": 26.3
    },
    {
      "Date": "18:55:43",
      "Estimate": 25.2
    }
  ]
}
AppController.java file
    public class AppController extends Application {
    public static final String TAG = AppController.class.getSimpleName();
    private RequestQueue mRequestQueue;
    private static AppController mInstance;
    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }
    public static synchronized AppController getInstance() {
        return mInstance;
    }
    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }
        return mRequestQueue;
    }
    public <T> void addToRequestQueue(Request<T> req, String tag) {
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }
}
MainActivity.java file
public class MainActivity extends AppCompatActivity {
    Button button;
    ArrayList<Entry> x;
    ArrayList<String> y;
    private LineChart mChart;
    public String TAG = "AppController";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.click);
        x = new ArrayList<Entry>();
        y = new ArrayList<String>();
        mChart = (LineChart)findViewById(R.id.chart1);
        mChart.setDrawGridBackground(false);
        mChart.setDescription("");
        mChart.setTouchEnabled(true);
        mChart.setDragEnabled(true);
        mChart.setScaleEnabled(true);
        mChart.setPinchZoom(true);
        //mChart.setMarkerView(mv);
        XAxis xl = mChart.getXAxis();
        xl.setAvoidFirstLastClipping(true);
        YAxis leftAxis = mChart.getAxisLeft();
        leftAxis.setInverted(true);
        YAxis rightAxis = mChart.getAxisRight();
        rightAxis.setEnabled(false);
        Legend l = mChart.getLegend();
        l.setForm(Legend.LegendForm.LINE);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawChart();
            }
        });
    }
    private void drawChart() {
        String tag_string_req = "req_chart";
        StringRequest strReq = new StringRequest(Request.Method.POST, "https://api.myjson.com/bins/10w5bk",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.d(TAG, "Response: " + response);
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            String id = jsonObject.getString("id");
                            JSONArray jsonArray = jsonObject.getJSONArray("coffee");
                            for (int i = 0; i < jsonArray.length(); i++) {
                               /* int value = jsonObject.getInt("value");
                                String date = jsonObject.getString("time");*/
                                int Estimate = jsonObject.getInt("Estimate");
                                String Date = jsonObject.getString("Date");
                                x.add(new Entry(Estimate, i));
                                y.add(Date);
                            }
                            LineDataSet set1 = new LineDataSet(x, "NAV Data Value");
                            set1.setLineWidth(1.5f);
                            set1.setCircleRadius(4f);
                            LineData data = new LineData(y, set1);
                            mChart.setData(data);
                            mChart.invalidate();
                        }
                        catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Error: " + error.getMessage());
            }
        });
        strReq.setRetryPolicy(new RetryPolicy() {
            @Override
            public void retry(VolleyError arg0) throws VolleyError {
            }
            @Override
            public int getCurrentTimeout() {
                return 0;
            }
            @Override
            public int getCurrentRetryCount() {
                return 0;
            }
        });
        strReq.setShouldCache(false);
        AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
    }
}
activity_mmain.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/chart1"
        android:layout_width="match_parent"
        android:layout_height="484dp" />
    <Button
        android:id="@+id/click"
        android:layout_below="@+id/chart1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</RelativeLayout>
the Error Logcat message
Process: com.example.stackoverflowtry, PID: 32279 java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.stackoverflowtry.AppController.addToRequestQueue(com.android.volley.Request, java.lang.String)' on a null object reference at com.example.stackoverflowtry.MainActivity.drawChart(MainActivity.java:139) at com.example.stackoverflowtry.MainActivity.access$000(MainActivity.java:30) at com.example.stackoverflowtry.MainActivity$1.onClick(MainActivity.java:66)
 
    