0
저는 Xamarin Android와 C#에 초보자입니다. API가 결과를 반환하는 동안 진행 바 (원을 로딩)를 추가하고 싶습니다. 이건 내 진행률 표시 줄입니다API가 결과를 반환하는 동안 진행률 표시 줄 (원로드)을 추가하는 방법은 무엇입니까?
,
ProgressBar mProgressBar = FindViewById<ProgressBar>(Resource.Id.progressBarConfirmJob);
mProgressBar.Visibility = ViewStates.Visible;
나는 내가 .axml에서이 버튼을 클릭 이벤트에 다음 API,
btnSubmit.Click += async (sender, e) =>
{
var jobId = txtJobID.Text;
if (txtJobID.Text.Length <= 0)
{
txtJobID.RequestFocus();
txtJobID.SetError("Job ID required", iconError);
}
else
{
var request = HttpWebRequest.Create(string.Format("http://192.168.79.174:90/api/test/" + jobId));
request.ContentType = "application/json";
request.Method = "GET";
mProgressBar.Visibility = ViewStates.Visible;
using (HttpWebResponse response = await request.GetResponseAsync() as HttpWebResponse)
{
if (response.StatusCode != HttpStatusCode.OK)
Console.Out.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode);
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
var content = reader.ReadToEnd();
dynamic arr = JsonConvert.DeserializeObject(content);
foreach (dynamic obj in arr)
{
tvJobID.Text = obj.JobID;
tvJobType.Text = obj.JobType;
tvDueDate.Text = obj.DueDate;
tvVisitTime.Text = obj.Time;
tvVisitStatus.Text = obj.VisitStatus;
tvAddress1.Text = obj.Address1;
tvAddress2.Text = obj.Address2;
tvPostCode.Text = obj.PostCode;
tvAuthority.Text = obj.Authority;
}
if (content == null || content == "" || content == "[]")
{
//Console.Out.WriteLine("Response contained empty body...");
layoutController.Visibility = ViewStates.Invisible;
Toast.MakeText(ApplicationContext, "Invalid Job ID or no visits for this ID. Please try again", ToastLength.Long).Show();
}
else
{
layoutController.Visibility = ViewStates.Visible;
}
}
}
}
};
을 가지고있다
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="51.0dp"
android:minWidth="25px"
android:minHeight="25px">
<ProgressBar xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBarRaiseJob"
android:layout_centerInParent="true" />
</RelativeLayout>
어떻게 웹 API가 결과를 반환 할 때까지 진행률 표시 줄을 표시합니다. 현재 진행률 막대가 2 초 동안 표시된 다음 API가 결과를 반환 할 때까지 멈추고 문제는 비동기 프로세스에 있다고 가정합니다. 내가 잘못 가고있는 어떤 생각, 모든 도움을 많이 주셔서 감사합니다
UI 스레드를 차단하지 않도록 이벤트 또는 async/await를 사용해보십시오. – mrousavy
Aync를 추가하고 기다리고 있지만 어디에서 ProgressBar를 사용해야합니까? – KMR