我要么后navigation start
或route shown
后按Back Button
。显示ProgressDialog后返回按钮按下
我的工作Fragment
。 View
按顺序排列如下:Fragment
中的A-B-C-D。并且,Back Press
工作流程如下:B:A,C:B:A,D:C:B:A。
但是,我想在每个back press
之后使用progress bar
,然后显示我在back press
之后来到的屏幕。
我在onBackPress
方法中使用以下代码:
public boolean onBackPressed() {
if (hasNavigationStarted) {
AlertDialog.Builder alert = new AlertDialog.Builder(HomeFragment.this.getActivity());
alert.setTitle("Really quit?");
alert.setMessage("Do you want to exit navigation?");
alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
isDrivingModeOn = false;
navigationManager.stopNavigation();
corLDriveInfoContainer.setVisibility(View.VISIBLE);
mapView.clearAllOverlays();
progressBar = new ProgressDialog(getActivity());
progressBar.setMessage("Loading ...");
progressBar.show();
progressBar.setCancelable(false);
if (isDrivingDirectionsOn) {
showDriveInfoForDrivingDirection();
rlDrivingDirections.setVisibility(View.VISIBLE);
((ToolbarActivity) getActivity()).getSupportActionBar().setTitle(R.string.app_name);
if (drivingDirectionDestPoint != null) {
mapView.deleteAllAnnotationsAndCustomPOIs();
addAnnotation(drivingDirectionDestPoint);
mapView.centerMapOnPosition(new SKCoordinate(drivingDirectionDestPoint.getLongitude(), drivingDirectionDestPoint.getLatitude()));
}
if (drivingDirectionStartPoint != null) {
mapView.deleteAllAnnotationsAndCustomPOIs();
addAnnotation(drivingDirectionStartPoint);
}
} else if (latestDriveInfoPlace != null) {
setSearchViewShown(true);
addAnnotation(latestDriveInfoPlace);
mapView.setZoom(MapUtils.DEFAULT_ZOOM_VALUE);
mapView.centerMapOnPosition(new SKCoordinate(latestDriveInfoPlace.getLongitude(), latestDriveInfoPlace.getLatitude()));
searchItem.expandActionView();
searchView.setQuery(latestDriveInfoPlace.getName(), false);
searchView.clearFocus();
}
}
});
alert.setNegativeButton("Cancel", null);
alert.show();
return true;
} else if (isRouteShown) {
isDrivingModeOn = false;
navigationManager.removeRouteCalculationViews();
mapView.deleteAllAnnotationsAndCustomPOIs();
isRouteShown = false;
corLDriveInfoContainer.setVisibility(View.VISIBLE);
if (isDrivingDirectionsOn) {
rlDrivingDirections.setVisibility(View.VISIBLE);
((ToolbarActivity) getActivity()).getSupportActionBar().setTitle(R.string.app_name);
if (drivingDirectionDestPoint != null) {
mapView.deleteAllAnnotationsAndCustomPOIs();
addAnnotation(drivingDirectionDestPoint);
mapView.centerMapOnPosition(new SKCoordinate(drivingDirectionDestPoint.getLongitude(), drivingDirectionDestPoint.getLatitude()));
}
if (drivingDirectionStartPoint != null) {
mapView.deleteAllAnnotationsAndCustomPOIs();
addAnnotation(drivingDirectionStartPoint);
}
} else if (latestDriveInfoPlace != null) {
setSearchViewShown(true);
addAnnotation(latestDriveInfoPlace);
mapView.setZoom(MapUtils.DEFAULT_ZOOM_VALUE);
mapView.centerMapOnPosition(new SKCoordinate(latestDriveInfoPlace.getLongitude(), latestDriveInfoPlace.getLatitude()));
searchItem.expandActionView();
searchView.setQuery(latestDriveInfoPlace.getName(), false);
searchView.clearFocus();
}
return true;
} else if (isDrivingDirectionsOn) {
isDrivingDirectionsOn = false;
rlDrivingDirections.setVisibility(View.GONE);
corLDriveInfoContainer.setVisibility(View.GONE);
setSearchViewShown(true);
searchItem.collapseActionView();
drivingDirectionDestPoint = null;
drivingDirectionStartPoint = null;
atvDestination.setText("");
atvStart.setText("");
hideKeyboard();
((DrawerViewInterface) getActivity()).showHamburgerIcon();
((DrawerViewInterface) getActivity()).unlockDrawer();
mapView.deleteAllAnnotationsAndCustomPOIs();
return true;
}
return false;
}
更新代码
我已经实现了ProgressDialog
。
progressBar = new ProgressDialog(getActivity());
progressBar.setMessage("Loading ...");
progressBar.show();
progressBar.setCancelable(false);
但是,我在哪里可以在这里使用的dismiss()
方法返回的画面时back press
后?可以做些什么来解决这个问题?
什么是你想使用进度对话框? –
我使用地图,所以后面按下地图需要时间来刷新,所以我想使用进度对话框。像这样的操作:'mapView.deleteAllAnnotationsAndCustomPOIs(); addAnnotation(drivingDirectionDestPoint); mapView.centerMapOnPosition(新SKCoordinate(drivingDirectionDestPoint.getLongitude(),drivingDirectionDestPoint.getLatitude())); '发生。所以,我想克服它。 –
你不必实现onBackPress。如果每个片段中都有一个AsyncTask,请在onPreExecute()上启动对话框,然后在PostExecute()上关闭它。 –