我在顯示進度對話框微調器時遇到了問題。我看了幾個主題,提出的解決方案似乎並不奏效。未顯示異步任務進度對話框
AsyncTask
中的所有代碼確實被成功調用,但是我看不到正在顯示的進度微調器。這個AsycTask
是在一個單獨的類中定義的,它從我的片段中被調用,我通過getActivity()
作爲上下文。
我的想法是,這個問題與上下文被賦予進度對話框的方式有關。
public class ExampleClass
{
private class loginAsyncTest extends AsyncTask<HttpPackage, Void, String>
{
ProgressDialog dialog;
Context spinnerContext;
public void setSpinnerContext(Context context)
{
spinnerContext = context;
}
@Override
protected void onPreExecute()
{
dialog = new ProgressDialog(spinnerContext);
dialog.setMessage("Loading...");
dialog.setIndeterminate(false);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setCancelable(true);
dialog.show();
Log.d("http", "dialog spinner started");
}
protected String doInBackground(HttpPackage... httpParameters)
{
HttpClient client = new DefaultHttpClient();
String url = httpParameters[0].getUrl();
// Get HTTP parameters that are passed in
ArrayList<NameValuePair> parameterList = httpParameters[0].getParameters();
HttpPost post = new HttpPost(url);
String responseJson = "";
try
{
post.setEntity(new UrlEncodedFormEntity(parameterList));
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null)
{
responseJson = responseJson + line;
}
}
catch (IOException e)
{
e.printStackTrace();
}
return responseJson;
}
protected void onPostExecute(String result)
{
if(dialog.isShowing())
{
dialog.dismiss();
}
}
}
}
這是對來自提供上下文的片段的ExampleClass的調用。
Public class SampelFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.dialog_login, container, false);
ExampleClass.loginRequest(params, getActivity()));
return rootView;
}
}
例如ExampleClass然後傳遞上下文到我們AsyncTask
public String loginRequest(HttpPackage postParameters, Context context)
{
loginAsyncTest loginAsync = new loginAsyncTest(context);
loginAsync.execute(postParameters);
return someString;
}
你在哪裏執行? –
@Lakhan我打算從片段中調用異步任務,我希望顯示進度對話框,但異步任務駐留在可以重用的獨立類中。 – mil06