2017-01-31 5 views
0

を作るためにVollyを使用しているとき、私は、配列の要求を行うアプリケーションのボタンを押していたとき、私はこのクラッシュエラーレポートを取得:クラッシュJSONリクエスト

01-31 16:55:51.713 3745-3745/com.example.guidofabbrini.easyracevolley E/AndroidRuntime: FATAL EXCEPTION: main 
                          Process: com.example.guidofabbrini.easyracevolley, PID: 3745 
                          java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.guidofabbrini.easyracevolley.AppController.addToRequestQueue(com.android.volley.Request)' on a null object reference 
                           at com.example.guidofabbrini.easyracevolley.MainActivity.makeJsonArrayRequest(MainActivity.java:120) 
                           at com.example.guidofabbrini.easyracevolley.MainActivity.access$000(MainActivity.java:21) 
                           at com.example.guidofabbrini.easyracevolley.MainActivity$1.onClick(MainActivity.java:54) 
                           at android.view.View.performClick(View.java:5198) 
                           at android.view.View$PerformClick.run(View.java:21147) 
                           at android.os.Handler.handleCallback(Handler.java:739) 
                           at android.os.Handler.dispatchMessage(Handler.java:95) 
                           at android.os.Looper.loop(Looper.java:148) 
                           at android.app.ActivityThread.main(ActivityThread.java:5417) 
                           at java.lang.reflect.Method.invoke(Native Method) 
                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

ここに私のコードは

public class MainActivity extends Activity { 

    // json array response url 
    private String urlJsonArry ="http://pastebin.com/raw/puYnpK96"; 
    private static String TAG = MainActivity.class.getSimpleName(); 
    private Button btnMakeArrayRequest; 

    // Progress dialog 
    private ProgressDialog pDialog; 

    private TextView txtResponse; 

    // temporary string to show the parsed response 
    private String jsonResponse; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btnMakeArrayRequest = (Button) findViewById(R.id.btnArrayRequest); 
     txtResponse = (TextView) findViewById(R.id.txtResponse); 

     pDialog = new ProgressDialog(this); 
     pDialog.setMessage("Please wait..."); 
     pDialog.setCancelable(false); 

     btnMakeArrayRequest.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // making json array request 
       makeJsonArrayRequest(); 
      } 
     }); 

    } 

    /** 
    * Method to make json array request where response starts with [ 
    * */ 
    private void makeJsonArrayRequest() { 

     showpDialog(); 

     JsonArrayRequest req = new JsonArrayRequest(urlJsonArry, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); 

         try { 
          // Parsing json array response 
          // loop through each json object 
          jsonResponse = ""; 
          for (int i = 0; i < response.length(); i++) { 

           JSONObject data = (JSONObject) response 
             .get(i); 

           String position = data.getString("position"); 
           JSONObject pilot = data 
             .getJSONObject("pilot"); 
           String name = pilot.getString("name"); 
           String lapcount = data.getString("lap_count"); 
           String avglaptime = data.getString("avg_lap_time"); 

           jsonResponse += "Position: " + position + "\n"; 
           jsonResponse += "Pilot: " + name + "\n"; 
           jsonResponse += "LapCount: " + lapcount + "\n"; 
           jsonResponse += "Avg_LapTime: " + avglaptime + "\n\n"; 

          } 

          txtResponse.setText(jsonResponse); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
          Toast.makeText(getApplicationContext(), 
            "Error: " + e.getMessage(), 
            Toast.LENGTH_LONG).show(); 
         } 

         hidepDialog(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       Toast.makeText(getApplicationContext(), 
         error.getMessage(), Toast.LENGTH_SHORT).show(); 
       hidepDialog(); 
      } 
     }); 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(req); 
    } 

    private void showpDialog() { 
     if (!pDialog.isShowing()) 
      pDialog.show(); 
    } 

    private void hidepDialog() { 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
    } 
} 

です私のアプリケーション

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); 
    } 

    public <T> void addToRequestQueue(Request<T> req) { 
     req.setTag(TAG); 
     getRequestQueue().add(req); 
    } 

    public void cancelPendingRequests(Object tag) { 
     if (mRequestQueue != null) { 
      mRequestQueue.cancelAll(tag); 
     } 
    } 
+0

「AppController.class'にコードを投稿してください。 – OBX

答えて

0

あなたのAndroidManifest.xmlには、以下のような行が1つもないようです。 pplicationタグ:

この行は、実装したアプリケーションサブクラスの完全修飾名を示しています。