Cykl życia w systemie Android
Ćwiczenie 1 rozpoczyna działanie 2 za pomocą kliknięcia przycisku. Po ustawieniu i wyświetleniu statycznej treści dla Działania 2 chcę rozpocząć AsyncTask. W wykonaniu AsyncTask użytkownik powinien wyświetlić ProgressBar. Moim problemem jest to, że zamiast ProgressBar występującego po skoncentrowaniu się na działaniu 2, działanie 1 pozostaje widoczne, podczas gdy AsyncTask jest wykonywany, a następnie przełącza się do działania 2 po zakończeniu wykonywania. Próbowałem umieścić moje AsyncTask w:
OnCreateOnPostCreateOnStartOnResume... w działaniu 2, ale działanie 2 nadal staje się widoczne dopiero po zakończeniu wykonywania zadania. Jaki punkt w cyklu życia Działania 2 muszę umieścić w AsyncTask, aby osiągnąć to, czego chcę? Kod w razie potrzeby:
Ćwiczenie 1 uruchamia AsyncTask, aby sprawdzić poprawność danych wprowadzonych przez użytkownika przed przejściem dalej. W OnPostExecute tego zadania, jeśli informacje są prawidłowe:
Intent intent = new Intent(_context, typeof(Activity2));
intent.PutExtra("Call", _call);
intent.PutExtra("Site", _site);
intent.PutExtra("ServiceType", _serviceType);
intent.PutExtra("Priority", _priority);
_context.StartActivity(intent);
Activity2.cs
public class Activity2 : Activity
{
private string Call { get; set; }
private string Site { get; set; }
private string Priority { get; set; }
private string ServiceType { get; set; }
private ViewAnimator Animator { get; set; }
private Spinner PrioritySpin { get; set; }
private Spinner ProblemSpin { get; set; }
private Spinner CauseSpin { get; set; }
private Spinner RepairSpin { get; set; }
private Spinner LaborHrsSpin { get; set; }
private Spinner LaborDecSpin { get; set; }
private Spinner TravelHrsSpin { get; set; }
private Spinner TravelDecSpin { get; set; }
private Spinner SerlModelSpin { get; set; }
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Intent intent = Intent;
Call = intent.GetStringExtra("Call");
Site = intent.GetStringExtra("Site");
Priority = intent.GetStringExtra("Priority");
ServiceType = intent.GetStringExtra("ServiceType");
Title = "Service Report for Call #" + Call + " at Site " + Site;
SetContentView(Resource.Layout.Activity2);
Animator = (ViewAnimator) FindViewById(Resource.Id.contentContainer);
Button basic = (Button) FindViewById(Resource.Id.basicBtn);
basic.Click += WizardClick;
Button equipment = (Button) FindViewById(Resource.Id.equipmentBtn);
equipment.Click += WizardClick;
Button parts = (Button) FindViewById(Resource.Id.partsBtn);
parts.Click += WizardClick;
Button comments = (Button) FindViewById(Resource.Id.commentsBtn);
comments.Click += WizardClick;
Button review = (Button) FindViewById(Resource.Id.reviewSubmit);
review.Click += WizardClick;
PrioritySpin = (Spinner) FindViewById(Resource.Id.prioritySpinner);
ProblemSpin = (Spinner) FindViewById(Resource.Id.problemSpinner);
CauseSpin = (Spinner) FindViewById(Resource.Id.causeSpinner);
RepairSpin = (Spinner) FindViewById(Resource.Id.repairSpinner);
LaborHrsSpin = (Spinner) FindViewById(Resource.Id.laborHrsSpinner);
LaborDecSpin = (Spinner) FindViewById(Resource.Id.laborDecSpinner);
TravelHrsSpin = (Spinner) FindViewById(Resource.Id.travelHrsSpinner);
TravelDecSpin = (Spinner) FindViewById(Resource.Id.travelDecSpinner);
ArrayAdapter<string> priorityAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, Priorities());
ArrayAdapter<string> problemAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, Problems());
ArrayAdapter<string> causeAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, Cause());
ArrayAdapter<string> repairAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, Repair());
ArrayAdapter<string> hoursAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, Hours());
ArrayAdapter<string> decAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, QuarterHours());
PrioritySpin.Adapter = priorityAdapter;
ProblemSpin.Adapter = problemAdapter;
CauseSpin.Adapter = causeAdapter;
RepairSpin.Adapter = repairAdapter;
LaborHrsSpin.Adapter = hoursAdapter;
LaborDecSpin.Adapter = decAdapter;
TravelHrsSpin.Adapter = hoursAdapter;
TravelDecSpin.Adapter = decAdapter;
PrioritySpin.SetSelection(Convert.ToInt32(Priority));
if (ServiceType == "PM")
{
ProblemSpin.SetSelection(Array.IndexOf(Problems(), "Scheduled"));
CauseSpin.SetSelection(Array.IndexOf(Cause(), "Scheduled"));
}
Window.SetSoftInputMode(SoftInput.StateAlwaysHidden);
}
protected override void OnResume()
{
base.OnResume();
SerlModelSpin = (Spinner)FindViewById(Resource.Id.equipSpinner);
IEquipment equipInterface = new EquipmentHelper(this, Animator, 5, 0);
string[] equipList = equipInterface.GetEquipmentList(Site);
ArrayAdapter<string> equipAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, equipList);
SerlModelSpin.Adapter = equipAdapter;
}
}