我现在正坐在小时,以便进行一次进步...
我在stackoverflow和其他网站上看了很多这样的例子。
问题:
我正在向活动添加进度对话框,并在按下按钮时将其移交给异步任务。 按下按钮时,活动显示大约2-3秒而没有progressdialog,在切换到另一个活动后,progressdialog显示并在异步任务完成后终止。 Coreographer告诉我,主要的活动是...... bla bla ..
// Get Position Button
getPosition = (Button) vg.findViewById(R.id.getPosition);
getPosition.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isAirplaneModeOn(PositionActivity.this) != true) {
try {
// System.out.println("Airplanemode off!");
if (gpsFunc.canGetLocation()) {
SharedPreferences gps = PositionActivity.this
.getSharedPreferences(prefName,
Context.MODE_PRIVATE);
String latlon = gps.getString("coordinates", null);
if (latlon != null) {
String[] split = latlon.split(";");
callWienerLinien();
latitude = Double.parseDouble(split[0]);
longitude = Double.parseDouble(split[1]);
pressed = (TextView) vg
.findViewById(R.id.pressed);
long start = new Date().getTime();
TabActivity tabs = (TabActivity) getParent();
tabs.getTabHost().setCurrentTab(1);
long end = new Date().getTime();
System.out.println(end-start);
} else {
pressed.setText("Bitte Position setzen.");
}
} else {
buildAlertMessageNoDataNetwork();
}
} catch (Exception e) {
errorOccuredMessage();
}
} else {
pressed.setText("Bitte Flugzeugmodus deaktivieren.");
}
}
});
public void callWienerLinien(){
ProgressDialog pd = new ProgressDialog(this);
pd.setMessage("Loading ...");
pt = new PublicTransport(pd,this);
pt.execute("http://webservice.qando.at/2.0/webservice.ft");
}
这是异步任务
public PublicTransport(ProgressDialog pd,Context context){
this.pd = pd;
this.context = context;
getLatLonDestination();
getLatLonOrigin();
}
@Override
protected void onPreExecute(){
super.onPreExecute();
System.out.println("onpre");
pd.show();
}
@Override
protected void onPostExecute(ArrayList<PublicTransportBean> al) {
System.out.println(al.get(0).getTripDuration());
System.out.println("onpostExec");
pd.dismiss();
}
答案 0 :(得分:1)
不要在线程中显示Progressdialog,在该线程中运行后台任务。我遇到了同样的问题并做了以下事情:
编辑:
尝试按如下方式调用ProgressDialog:
runOnUiThread(new Runnable() { @Override public void run() { final ProgressDialog progressDialog=new ProgressDialog(cont); progressDialog.setMessage("Progress"); progressDialog.show(); } });
答案 1 :(得分:0)
我解决了这个问题......
我打电话给
TabActivity tabs = (TabActivity) getParent();
tabs.getTabHost().setCurrentTab(1);
在异步任务的后执行中。 工作完美.....两行代码和13个小时的学习: - (