2014-04-06 2 views
0

FATAL ERROR 보내기 JSON :내가 구문 분석 할 때이 오류가있어

04-06 13:39:13.517: W/dalvikvm(2582): threadid=1: thread exiting with uncaught exception (group=0xa62f9288) 
04-06 13:39:13.521: E/AndroidRuntime(2582): FATAL EXCEPTION: main 
04-06 13:39:13.521: E/AndroidRuntime(2582): java.lang.NullPointerException 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at JSONParser.GetTunes.onPostExecute(GetTunes.java:207) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at JSONParser.GetTunes.onPostExecute(GetTunes.java:1) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at android.os.AsyncTask.finish(AsyncTask.java:631) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at android.os.AsyncTask.access$600(AsyncTask.java:177) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at android.os.Looper.loop(Looper.java:137) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at java.lang.reflect.Method.invoke(Method.java:511) 
04-06 13:39:13.521: E/AndroidRuntime(2582):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 

UPDATE : 클래스는 여기에 있습니다 :

public class GetTunes extends AsyncTask<Void, Void, Void> { 

    private Activity activity; 
    private ArrayList<HashMap<String, String>> DATA; 
    private String DOMAIN, URL; 
    private ProgressDialog pDialog; 

    LazyAdapter Lazyadapter; 
    ListView list; 

    private static final String TAG_TONE = "objects"; 
    // ================================================================= 
    // CATEGORY INFORMATION 
    private static final String TAG_CAT = "category"; 
    private static final String TAG_CAT_CNT = "cnt_tones"; 
    private static final String TAG_CAT_ID = "id"; 
    private static final String TAG_CATID = "cat_id"; 
    private static final String TAG_CAT_IMG = "image"; 
    private static final String TAG_CAT_TITLE = "title"; 
    private static final String TAG_CATTITLE = "cat_title"; 
    private static final String TAG_CAT_RES_URI = "resource_uri"; 
    // ================================================================= TONE 
    // INFORMATION 
    private static final String TAG_DOWNLOAD = "cnt_download"; 
    private static final String TAG_LIKE = "cnt_like"; 
    private static final String TAG_CREATE_DATE = "create_time"; 
    private static final String TAG_URL = "file_url"; 
    private static final String TAG_TONE_ID = "id"; 
    private static final String TAG_TONEID = "tone_id"; 
    private static final String TAG_TITLE = "title"; 
    private static final String TAG_TONETITLE = "tone_title"; 
    private static final String TAG_RES_URI = "resource_uri"; 
    // ================================================================= USER 
    // INFORMATION 
    private static final String TAG_USER = "user"; 
    private static final String TAG_USER_AVATAR = "avatar"; 
    private static final String TAG_USER_ID = "id"; 
    private static final String TAG_USERID = "user_id"; 
    private static final String TAG_USER_NAME = "name"; 

    // CONSTRUCTOR 
    public GetTunes(Activity a, ArrayList<HashMap<String, String>> d, String domain, String url) { 
     activity = a; 
     DATA = d; 
     DOMAIN = domain; 
     URL = url; 
    } 

    JSONArray Ringtunes = null; 

    // ===================================================================== 
    // onPreExecute 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     // Showing progress dialog 
     pDialog = new ProgressDialog(activity); 
     pDialog.setMessage("Wait..."); 
     pDialog.setCancelable(false); 
     pDialog.show(); 
     Log.d("phase1 ", "> " + "DONE"); 
    } 

    // ===================================================================== 

    // ===================================================================== 
    // doInBackground 
    @Override 
    protected Void doInBackground(Void... arg0) { 
     // CREATING SERVICE HANDLER CLASS INSTANCE 
     ServiceHandler sh = new ServiceHandler(); 

     // MAKING A RESQUEST TO URL AND GETTING RESPONSE 
     String jsonStr = sh.makeServiceCall(URL, ServiceHandler.GET); 
     Log.d("phase2 ", "> " + "DONE"); 
     Log.d("Response: ", "> " + jsonStr); 
     if (jsonStr != null) { 

      try { 

       JSONObject jsonObj = new JSONObject(jsonStr); 

       // GETTING JSON ARRAY NODE 
       Ringtunes = jsonObj.getJSONArray(MainActivity.TAG_TONE); 

       // LOOPIN THROUGH ALL TONES 
       for (int i = 0; i < Ringtunes.length(); i++) { 

        JSONObject ring = Ringtunes.getJSONObject(i); 

        // CATEGORY NODE IS A JSON OBJECT 
        JSONObject category    = ring.getJSONObject(MainActivity.TAG_CAT); 
        String cat_cnt     = category.getString(MainActivity.TAG_CAT_CNT); 
        String cat_id     = category.getString(MainActivity.TAG_CAT_ID); 
        String cat_img     = category.getString(MainActivity.TAG_CAT_IMG); 
        String cat_title    = category.getString(MainActivity.TAG_CAT_TITLE); 
        String cat_uri     = category.getString(MainActivity.TAG_CAT_RES_URI); 

        String tone_download   = ring.getString(MainActivity.TAG_DOWNLOAD); 
        String tone_like    = ring.getString(MainActivity.TAG_LIKE); 
        String tone_createDate   = ring.getString(MainActivity.TAG_CREATE_DATE); 
        String tone_url     = DOMAIN + ring.getString(MainActivity.TAG_URL); 
        String tone_id     = ring.getString(MainActivity.TAG_TONE_ID); 
        String tone_title    = ring.getString(MainActivity.TAG_TITLE); 
        String tone_uri     = ring.getString(MainActivity.TAG_RES_URI); 

        // USER NODE IS A JSON OBJECT 
        JSONObject user     = ring.getJSONObject(MainActivity.TAG_USER); 
        String user_avatar    = DOMAIN + user.getString(MainActivity.TAG_USER_AVATAR); 
        String user_id     = user.getString(MainActivity.TAG_USER_ID); 
        String user_name    = user.getString(MainActivity.TAG_USER_NAME); 

        // TEM HASHMAP FOR EACH TONE 
        HashMap<String, String> tones = new HashMap<String, String>(); 

        // ADDING EACH CHILD NODE TO HASH MAP KEY > VALUE 
        tones.put(TAG_CAT_CNT, cat_cnt); 
        tones.put(TAG_CATID, cat_id); 
        tones.put(TAG_CAT_IMG, cat_img); 
        tones.put(TAG_CATTITLE, cat_title); 
        // ====================================== 
        tones.put(TAG_DOWNLOAD, tone_download); 
        tones.put(TAG_LIKE, tone_like); 
        tones.put(TAG_CREATE_DATE, tone_createDate); 
        tones.put(TAG_URL, tone_url); 
        tones.put(TAG_TONEID, tone_id); 
        tones.put(TAG_TONETITLE, tone_title); 
        // ====================================== 
        tones.put(TAG_USER_AVATAR, user_avatar); 
        tones.put(TAG_USERID, user_id); 
        tones.put(TAG_USER_NAME, user_name); 

        Set keys = tones.keySet(); 
        for (Iterator iter = keys.iterator(); iter.hasNext();) { 
         String key = (String) iter.next(); 
         String value = (String) tones.get(key); 
            Log.d(key, value); 
        } 

        // ADDING TONES TO LIST 
        DATA.add(tones); 
        Log.d("phase3 ", "> " + "DONE"); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } else { 
      Log.e("ServiceHandler", "Couldn't get any data from the url"); 
      Toast.makeText(activity, "Couldn't get any data from the url", 
        Toast.LENGTH_LONG).show(); 
     } 

     return null; 
    } 

    // ===================================================================== 

    // ===================================================================== 
    // onPostExecute 
    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 

     // Dismiss the Progress dialog 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 

     // Updating parsed JSON data into List view 
     Lazyadapter = new LazyAdapter(activity, DATA); 
     AnimationAdapter animAdapter = new SwingBottomInAnimationAdapter(Lazyadapter); 
     animAdapter.setInitialDelayMillis(300); 
     animAdapter.setAbsListView(list); 
     list.setAdapter(animAdapter); 
    } 
    // ===================================================================== 

} 

내가 사용하고자하는 이 내 주요 활동에 calss이 같은 전화 :

새로운 GetTunes (MainActivity.this, TunesList, thumb, url) .execute();

+1

'onPostExecute'에 코드를 게시하십시오. 오류가 발생한 곳이므로 코드를 게시하십시오. – dharms

+1

또한 onPostExecute 게시하십시오. 그리고 GetJson 메서드를 호출하는 곳입니다. 우리는 코드도 볼 필요가있다. – Aashir

+0

전체 코드를 게시하십시오. 귀하의 예제에서는 GetTunes라는 클래스에 대해 GetJson()이라는 생성자가있는 것으로 보이며 AsyncTask (모든 Void)에 대해 정의 된 유형이 없습니다. 활동에 대한 참조로 무엇을하고 싶은지 확실하지 않지만 나쁜 생각입니다. ListView에 결과를 게시하거나 처리기 또는 다른 것으로 전달할 수 있습니다. –

답변

1

list은 null입니다. 코드에서 아무 곳이나 초기화하지 않습니다. 그래서 이것은 오류가있는 행입니다 : list.setAdapter(animAdapter);. 동적으로 생성하거나 자원 ID를 설정하여 문제를 해결하십시오.

+0

고마워요 ... 완전히 잊어 버렸습니다 !! – MAY3AM

관련 문제