2012-05-01 17 views
1

スレッドに関する質問があります。私はここで何が起こっているのか分かりません。私の理解は、長いアクティビティが終了するまで進捗ダイアログは終了しませんが、それは起こっていることではありません。私は長い活動を開始し、終了し、スピナーを却下し、新しい活動を意図して開始したい。スレッド内で新しいアクティビティを開始

final ProgressDialog spinnerDialog = ProgressDialog.show( 
       MainScreen.this, "", 
       "Waiting for accurate (> 10 meters) GPS coordinates...Please wait. ", true); 
      new Thread(new Runnable() { 
       public void run() { 
        //Do something that takes a while 
        spinnerDialog.dismiss(); 
        return; 
       } 
      }).start(); 

       Intent tvi = new Intent(); 
       tvi.setClass(getInstance(), TabbedView.class); 
       startActivity(tvi); 

答えて

0

新しいアクティビティを開始するには、メイン(UI)スレッドで行う必要があります。しかし、新しいスレッドを開始した後にコードを書くだけでは、あなたの意図を作成するために必要なすべての情報が保証されるわけではありません。私はここハンドラの開発者ページへのリンクがあり、より重要なのハンドラ

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    progress = (ProgressBar) findViewById(R.id.progressBar1); 
    handler = new Handler(); 
    startprogress(); 
} 

public void startProgress(View view) { 
    // Do something long 
    Runnable runnable = new Runnable() { 
     @Override 
     public void run() { 
      //do long stuff (like getting info for intent) 
      handler.post(new Runnable() { 
      @Override 
      public void run() { 
       //make new intent 
       //start new activity with intent you just made 
      } 
     }); 
     } 
    } 
    }; 
    new Thread(runnable).start(); 
} 

}

とを使用することをお勧めします http://developer.android.com/reference/android/os/Handler.html

+0

どのように私はprogressdialogでこれを行うことができますか? –

関連する問題