Я разрабатываю приложение, в котором есть несколько вкладок, и в одной из них (по умолчанию) указано MapActivity
. Мой MapActivity
получил свой собственный ProgressDialog
(загружает некоторые вещи onCreate
).
Когда я пытаюсь загрузить другую ProgressDialog
в моей основной деятельности (TabActivity
), черный экран появляется, пока карта не загрузится. Затем диалоговое окно MapActivity
показывает и скрывает (после загрузки материала), а затем диалоговое окно TabActivity
показывает ...
Обратите внимание, что я начинаю диалог TabActivity
в TabActivity.onCreate()
перед вызовом намерения с MapActivity
.
Кто-нибудь может мне помочь?
Код моего TabActivity
:
public class MyTabActivity extends TabActivity {
private ProgressDialog progressDialog = null;
private Handler progressDialogHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (null != progressDialog)
progressDialog.dismiss();
super.handleMessage(msg);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
progressDialog.show();
setContentView(R.layout.main);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
prepareTabs();
return null;
}
protected void onPostExecute(Void result) {
progressDialogHandler.sendEmptyMessage(0);
};
}.execute();
}
private void prepareTabs() {
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, MyMapActivity.class);
spec = tabHost.newTabSpec(MyMapActivity.TAG).setIndicator(MyMapActivity.TAG).setContent(intent);
tabHost.addTab(spec);
}
}
Ошибка, которую я получаю (строка с tabHost.addTab(spec);
): E/AndroidRuntime(8762)
, FATAL EXCEPTION: AsyncTask #1
А вот и MyMapActivity:
public class MyMapAcitivity extends MapActivity {
private MapView mapView;
private ProgressDialog progressDialog = null;
private Handler progressDialogHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (null != progressDialog)
progressDialog.dismiss();
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.my_map_activity);
loadMap();
setupLocationBasedServices();
}
private void loadMap() {
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
loadEvents();
}
private void loadEvents() {
progressDialog = new ProgressDialog(MyMapActivity.this);
progressDialog.setMessage("Loading events...");
progressDialog.show();
new AsyncTask<Void, Void, ArrayList<Event>>() {
@Override
protected ArrayList<Event> doInBackground(Void... params) {
new EventLoader().loadEvents();
progressDialogHandler.sendEmptyMessage(0);
return eventLoader.getEvents();
}
}.execute();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}