수고 많으십니다.

안드로이드 공부하다가 프로그래스다이아로그에서 막혀 버렸습니다.

지금 프로그래스다이아로그(이하 [프다])에 대해서 공부를 하고 있습니다.

처리시간을 [프.다]의 막대기의 움직임에 적용하려고 하고 있습니다.

일단 소스를 보시면

public class ProgressDialogTest extends Activity {
    /** Called when the activity is first created. */
     private static final int MAX_PROGRESS = 100;
     private ProgressDialog mProgressDialog;
     private int mProgress;
     private Handler mProgressHandler;
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
  //      System.out.println("operater 1");
        mProgressDialog = new ProgressDialog(TextView1.this);
        mProgressDialog.setTitle("ProgressDialogTest");
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        mProgressDialog.setMax(MAX_PROGRESS);
//        System.out.println("operater 2");
        mProgressDialog.show();
        mProgress = 0;
        mProgressDialog.setProgress(0);
//        System.out.println("operater 3");
            
        mProgressHandler = new Handler() {
           
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                System.out.println("operater 4");
                if (mProgress >= MAX_PROGRESS) {
  //                  System.out.println("operater 5");
                    mProgressDialog.dismiss();
                } else {
 //                   System.out.println("operater 6"+ mProgress);
                    mProgress++;
                    mProgressDialog.incrementProgressBy(1);
                    mProgressHandler.sendEmptyMessageDelayed(0, 100);
                }
            }
        }; 
        new Thread(new Runnable(){

            public void run() {
                // TODO Auto-generated method stub
//            System.out.println("operater 7");        
                mProgressHandler.sendEmptyMessage(0);
            }
       
            }
        ).start();
    }
}

위의 소스대로 하면 잘 돌아갑니다.

그런데 하고 싶은 것은 위의 소스의 MAX_PROGRESS(최대치)에 데이터 총 수를 적용 시켜
데이터를 데이터베이스에 입력하고 끝나는 작업을 [프.다]로 나타 내고 싶습니다. 그래서 소스를
이렇게 바꿨습니다.
...............................중략..............................................
//밑의 소스는 onCreate() 안에 위치하고 있습니다.
            xmlParser = new XMLParser(); //입력하고 싶은 데이터는 XML데이터 입니다.
            final int nodeLeng = xmlParser.getXmlDataNodes(startYmd, endYmd); // 데이터 총 노드수를 구합니다.
           
            dialog = new ProgressDialog(this);
            dialog.setTitle("데이터를 입력하고 있습니다.");
            dialog.setMessage("좀만 기둘려용!!");
            dialog.setMax(nodeLeng);
            //dialog.setCancelable(false); // 추가질문 ) 이게 모하는 거죵??
            dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            dialog.show();
            final UranaiDatabaseAdapter uHelper= new UranaiDatabaseAdapter(this);
            mProgressHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    if (mProgress >= nodeLeng) {
                        dialog.dismiss();
                        uHelper.close();
                    } else {
                    //xmlParser.xmlParseInsert(mProgress)는 데이터를 파싱하는 부분입니다.
                   // uHelper.insertFortunData 는 데이터를 인설트하는 소스입니다.
                        uHelper.insertFortunData(xmlParser.xmlParseInsert(mProgress));
                        mProgress++;
                        dialog.incrementProgressBy(1);
                        mProgressHandler.sendEmptyMessageDelayed(0, nodeLeng);
                    }
                }
            }; 
            new Thread(new Runnable(){

                public void run() {
                    // TODO Auto-generated method stub
                    uHelper.open(); //데이터 베이스 오픈
                    mProgressHandler.sendEmptyMessage(0);
                }
           }).start();

//데이터 베이스 DAO부분은 아무 이상이 없었습니다.

데이터베이스 여는 소스 --------------------------------
//aCtx는 Context형
public UranaiDatabaseAdapter open() {
        dbHelper = new DatabaseOpenHelper(aCtx);
        sdb = dbHelper.getWritableDatabase();
        return this;
 }
 public void close() {
        sdb.close();
 }
------------------------------------------------------

위의 소스로 고치고 나서 로그를 확인 한 결과 로고 내용은

AndroidRuntime(722): Uncaught handler: thread main exiting due to uncaught exception
AndroidRuntime(722): java.lang.IllegalStateException: database not open
AndroidRuntime(722):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1254)
AndroidRuntime(722):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1173)
AndroidRuntime(722):     at  com.test.fortune.UranaiDatabaseAdapter.insertFortunData(UranaiDatabaseAdapter.java:130)
AndroidRuntime(722):     at com.test.fortune.UranaiDemo1_1$1.handleMessage(UranaiDemo1_1.java:76)
AndroidRuntime(722):     at android.os.Handler.dispatchMessage(Handler.java:99)
AndroidRuntime(722):     at android.os.Looper.loop(Looper.java:123)
AndroidRuntime(722):     at android.app.ActivityThread.main(ActivityThread.java:3948)
AndroidRuntime(722):     at java.lang.reflect.Method.invokeNative(Native Method)
AndroidRuntime(722):     at java.lang.reflect.Method.invoke(Method.java:521)
AndroidRuntime(722):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
AndroidRuntime(722):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
AndroidRuntime(722):     at dalvik.system.NativeStart.main(Native Method)

이러 했습니다. 데이터베이스를 못 여는 것 같습니다. ㅠㅠ
디비 오픈 위치를 바꿔보고 해도 안되요 ㅠㅠ

디비.open()을 Handler안에 넣어서 해보면
에러는 나오지 않으나  프.다가 나오지 않습니다. ㅠㅠ

어떻게 해야 합니까 방법이 있으면 고수님들 조언 부탁드립니다. ㅠㅠ