Дело в том, что вы запускаете поток, который не повлияет на ваш основной интерфейс. Так что в конечном итоге происходит то, что ваш поток будет работать отдельно, что теперь позволит выполнять следующие строки вашего кода. Так что в вашем случае
TabHost1 TabHost1Object2 = new TabHost1();
TabHost1Object2.tabHost.setCurrentTab(2);
эти строки будут выполняться независимо от вашего потока, который также выполняется одновременно. Здесь вы можете использовать AsyncTask или создать обработчики для обработки этой части вашего кода. Вы должны изменить свой код следующим образом.
Сделайте это в вашем onCreate ()
Handler handler;
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
Pdialog.dismiss();
TabHost1 TabHost1Object2 = new TabHost1();
TabHost1Object2.tabHost.setCurrentTab(2);
}
};
А теперь в вашей ветке, вызовите обработчик вот так:
final ProgressDialog Pdialog = ProgressDialog.show(SpinnerClass.this, "",
"Loading. Please wait...", true);
Thread ProgressThread = new Thread() {
@Override
public void run() {
try {
sleep(3000);
} catch(InterruptedException e) {
// do nothing
} finally {
handler.sendEmptyMessage(0);
}
}
};
this will allow your tabhost to wait until the thread gets executed and will come into view after thread finishes execution.