혼자 고민고민 하다가 도대체 해결이 안되서 질문 드립니다.

알려주시면 대단히 감사하겠습니다.


아래와 같은 코드를 작성했는데, 

----------------------------------------------------------------------------------------------------------

...

   ArrayList<String> sidoItem;

   AlertDialog.Builder dialog;

...

private void initDialog(){

                     final ZipCode zipcode = new ZipCode(); 

                     sidoItem = zipcode.getSIDO();

               

                     final String[] sidoItems = new String[sidoItem.size()];  

                    for (int i=0;i<sidoItem.size();i++) {                    

                    try{

                       if(sidoItem.get(i).equals(sidoItem.get(i+1))){                        

                       }

                       else{

                        sidoItems[i] = sidoItem.get(i);

                        Log.d("MyTag", "sidoItems["+i+"]: "+sidoItems[i]);

                        }                        

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

                    }

                     dialog = new AlertDialog.Builder(this);

                     dialog.setTitle("시선택");                

                     dialog.setSingleChoiceItems(sidoItems, -1, new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog, int which) {

                                          Toast.makeText(getApplicationContext(), sidoItems[which], Toast.LENGTH_SHORT).show();

                                          dialog.dismiss();

                                }

                     });                   

                     dialog.show();                      

           }


----------------------------------------------------------------------------------------------------------


public ArrayList<String> getSIDO(){                                        

                     

                     ArrayList<String> sidolist = new ArrayList<String>();

                     try{

                                mDatabase = SQLiteDatabase.openDatabase(ROOT_DIR + "databases/postcode.db", null, Context.MODE_WORLD_WRITEABLE);                    

                                mCursor = mDatabase.query("zipcode", new String[] {"SIDO"},null,null,null,null,null);                               

                                if(mCursor.moveToFirst())

                                {

                                          do{

                                        sidolist.add(mCursor.getString(0));

                                          }while (mCursor.moveToNext());

                                }

                                Log.d("MyTag", "getSIDO Invoked");         

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

                     mDatabase.close();

                     return sidolist;

                     

           }



----------------------------------------------------------------------------------------------------------


자꾸 NullPointerException이 발생해서 프로그램이 종료됩니다.

근데 희한한건 dialog생성되는 부분부터 dialog.show()까지 NullPointerException 처리하면, 오류가 발생하지 않으나 실제 Vitual Device에서 Dialog창이 생성되지 않습니다. 

아래는 Logcat 내용 입니다.


11-19 01:47:23.355: E/AndroidRuntime(230): Uncaught handler: thread main exiting due to uncaught exception

11-19 01:47:23.375: E/AndroidRuntime(230): java.lang.NullPointerException

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.AbsListView.obtainView(AbsListView.java:1274)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.ListView.measureHeightOfChildren(ListView.java:1147)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.ListView.onMeasure(ListView.java:1060)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.View.measure(View.java:7964)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.View.measure(View.java:7964)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.View.measure(View.java:7964)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.View.measure(View.java:7964)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.View.measure(View.java:7964)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.ViewRoot.performTraversals(ViewRoot.java:763)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.os.Handler.dispatchMessage(Handler.java:99)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.os.Looper.loop(Looper.java:123)

11-19 01:47:23.375: E/AndroidRuntime(230): at android.app.ActivityThread.main(ActivityThread.java:4363)

11-19 01:47:23.375: E/AndroidRuntime(230): at java.lang.reflect.Method.invokeNative(Native Method)

11-19 01:47:23.375: E/AndroidRuntime(230): at java.lang.reflect.Method.invoke(Method.java:521)

11-19 01:47:23.375: E/AndroidRuntime(230): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)

11-19 01:47:23.375: E/AndroidRuntime(230): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

11-19 01:47:23.375: E/AndroidRuntime(230): at dalvik.system.NativeStart.main(Native Method)


아래 내용은 sidoItems을 Log.d로 출력한 자료 입니다.
11-19 13:54:27.966: DEBUG/MyTag(235): sidoItems[7888]: 서울
11-19 13:54:27.986: DEBUG/MyTag(235): sidoItems[11240]: 부산
11-19 13:54:28.006: DEBUG/MyTag(235): sidoItems[13852]: 대구
11-19 13:54:28.016: DEBUG/MyTag(235): sidoItems[15425]: 인천
11-19 13:54:28.026: DEBUG/MyTag(235): sidoItems[16740]: 광주
11-19 13:54:28.036: DEBUG/MyTag(235): sidoItems[17652]: 대전
11-19 13:54:28.036: DEBUG/MyTag(235): sidoItems[18451]: 울산
11-19 13:54:28.056: DEBUG/MyTag(235): sidoItems[21263]: 강원
11-19 13:54:28.096: DEBUG/MyTag(235): sidoItems[29591]: 경기
11-19 13:54:28.116: DEBUG/MyTag(235): sidoItems[33244]: 경남
11-19 13:54:28.146: DEBUG/MyTag(235): sidoItems[38183]: 경북
11-19 13:54:28.176: DEBUG/MyTag(235): sidoItems[42113]: 전남
11-19 13:54:28.186: DEBUG/MyTag(235): sidoItems[44993]: 전북
11-19 13:54:28.196: DEBUG/MyTag(235): sidoItems[45474]: 제주
11-19 13:54:28.206: DEBUG/MyTag(235): sidoItems[48687]: 충남


알려주시면 너무 감사하겠습니다.
이 문제때문에 하루를 날리네요~ ㅜ.ㅜ)