【发布时间】:2017-09-13 05:54:59
【问题描述】:
我有两个Activity。 MainActivity 正在调用另一个扩展 AsyncTask 的 Activity。在AsyncTask 我有显示ProgressDailogonPreExecute(),但ProgressDailog 没有被显示。原因可能是AyncTask 执行时间较短,但响应但响应需要时间,因此应该显示ProgressDialog。
提供以下代码。
Aysnc 类
public class NewConnections extends AsyncTask<Void,Void,String>{
Context context;
String[] name,value;
String Geturl,para;
ProgressDialog progressDialog;
NewConnections(Context context,String[] name,String[] value,String Url){
this.context = context;
this.name = name;
this.value = value;
Geturl = Url;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(context);
progressDialog.setMessage("Please Wait");
progressDialog.show();
}
@Override
protected String doInBackground(Void... voids) {
try
{
para = DCBUtil.jsonCovertion(name,value);
URL url = new URL(Geturl);
String responseStr = XXX.callJsonHttp(url,para);
System.out.println("Response of Home Open FD :: "+responseStr);
return responseStr;
}catch(Exception e)
{
return "Error";
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
progressDialog.dismiss();
}
}
主类
public class FirstPage extends AppCompatActivity {
Button existUser,newUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first_page);
existUser = (Button)findViewById(R.id.existUser);
newUser = (Button)findViewById(R.id.newUser);
newUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String[] value = {"asdasd"};
String[] name = {"dprm"};
try {
NewConnections v= new NewConnections(FirstPage.this,name,value,"url is provided");
v.execute().get();
} catch (Exception e) {
e.printStackTrace();
}
}
});
【问题讨论】:
-
这不是一个 Android Studio 问题。不要使用那个标签
-
您是否通过评论这一行来检查进度是否显示 progressDialog.dismiss();
-
是的,通过执行该进度对话框已显示,但问题是当该特定活动完成时它的工作。 ProgressDialog 仍在工作。这是错误的。
-
尝试 onPreExecute() : progressDialog.setCancelable(false);
-
@NikhilSawant 您是否在 postExecute() 中显示结果?如果是,则首先处理响应,然后关闭进度
标签: android-fragments android-asynctask progressdialog