2013-05-30 4 views
-1

다음 코드에서 Array String을 채우려고합니다.왜 Null 예외가 발생합니까?

public void setArray_name_venues(List<Venue> list) { 
     // storing string resources into Array 
     for(int i = 0; i < list.size(); i++){ 
      this.name_venues[i] = "" + list.get(i).getName(); 
     } 
    } 

저는 Asynhttp 클라이언트를 사용하며이 메소드를 onFinish 메소드라고합니다.

public void getVenues() { 

     AsyncHttpClient client = new AsyncHttpClient(); 
     client.get(getQueryVenues4SQ(), null, new JsonHttpResponseHandler() { 

      @Override 
      public void onFinish() { 
       // TODO Auto-generated method stub 
       //super.onFinish(); 

       File log2 = new File(Environment.getExternalStorageDirectory(),"venlist.txt"); 

       try { 
        BufferedWriter out = new BufferedWriter(new FileWriter(log2.getAbsolutePath(),false)); 
        for(int i = 0; i < getListCategories().size(); i++){ 
         out.write(listVenues.get(i).toString()); 
        } 
        out.close(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       runOnUiThread(new Runnable() { 
        public void run() { 
         setArray_name_venues(listVenues); 
         Log.i("ArrayVenues", getArray_name_venues().toString()); 
         // Binding resources Array to ListAdapter 
         customListView.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.list_venues, name_venues)); 

        } 
       }); 

       runOnUiThread(new Runnable() { 
        public void run() { 
         makeToast("Nightclubs cargados", 1); 
        } 
       }); 
      } 

setArray_name_venues (listVenues)에서 실패합니다. 당신의 도움에 대한

감사

편집 :

"name_venues"는 한 OnCreate 방법 전에 공용 클래스 MainActivity의 시작에서 "문자열 [] name_venues"변수에 있습니다.

로그 캣 :

05-30 14:24:14.645: W/dalvikvm(21040): threadid=1: thread exiting with uncaught exception (group=0x410652a0) 
05-30 14:24:14.645: E/AndroidRuntime(21040): FATAL EXCEPTION: main 
05-30 14:24:14.645: E/AndroidRuntime(21040): java.lang.NullPointerException 
05-30 14:24:14.645: E/AndroidRuntime(21040): at victor.martin.loc4sq.MainActivity.setArray_name_venues(MainActivity.java:100) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at victor.martin.loc4sq.MainActivity$2$1.run(MainActivity.java:271) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at android.app.Activity.runOnUiThread(Activity.java) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at victor.martin.loc4sq.MainActivity$2.onFinish(MainActivity.java:269) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:194) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at com.loopj.android.http.JsonHttpResponseHandler.handleMessage(JsonHttpResponseHandler.java:123) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at com.loopj.android.http.AsyncHttpResponseHandler$1.handleMessage(AsyncHttpResponseHandler.java:84) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at android.os.Handler.dispatchMessage(Handler.java) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at android.os.Looper.loop(Looper.java) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at android.app.ActivityThread.main(ActivityThread.java) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at java.lang.reflect.Method.invokeNative(Native Method) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at java.lang.reflect.Method.invoke(Method.java) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
05-30 14:24:14.645: E/AndroidRuntime(21040): at dalvik.system.NativeStart.main(Native Method) 
+0

로그 고양이 게시는 정확히 어디에서 볼 수 있습니까? – Boardy

+2

'name_venues [] '은 어디에 선언되어 있습니까? – LuigiEdlCarno

+0

게시판 스택 – njzk2

답변

1

시도

public void setArray_name_venues(List<Venue> list) { 
    name_venues = new String[list.size()]; 
    // storing string resources into Array 
    for(int i = 0; i < list.size(); i++){ 
     this.name_venues[i] = "" + list.get(i).getName(); 
    } 
} 
+0

와우! 그게 전부 야. 나는 Strings가 공간을 예약 할 필요가 없다고 생각했다! 고맙습니다. – MAOL

1

name_venues [내가] 만약 당신이 직접에 목록 매개 변수 객체를 할당 할 수 있습니다 그것을 사용하는 잘못된 방법은 목록 후 그에게 경우 name_venues [ i]는 String 배열이고 String으로 선언했습니다. name_venues []; 그 인덱스를 사용하려고하면 널 예외가 생기므로 앞에 for 문을 추가하십시오.

name_venues=new String[list.size()]; 
+0

감사합니다. ;) – MAOL

0

예외의 가능한 원인을 확인하기 위해 제공된 코드 또는 디버깅 정보가 충분하지 않습니다. 하나의 가능성은 귀하의 listVenues 목록이 null이거나 그 중 하나가 null이라는 것입니다.

getListCategories().size() 경우 다음 for 루프는 setArray_name_venues 호출 할 때까지 널 포인터에 대해 알고하지 않을 수 있도록 목록에 액세스 결코 우리의 listVenues venlist.txt 로그 파일에 기록이 제로입니다.

혹시라도 venlist.txt 파일이 비어 있습니까?

그렇지 않으면 코드에 로깅을 추가하십시오. 적어도 null이 어디에서 왔는지는 분명해야합니다. 일단 당신이 그것을 알게되면, 그것을 고치는 방법을 이해하는 것이 더 쉬울 것입니다.

관련 문제