如何在活動之間的長時間過渡期間安裝旋轉的進度欄(或對話框)?我見過有助於實現AsyncTask的解決方案 - 我在文章中提到鏈接將爲How to display progress dialog before starting an activity in Android?,但問題在於進度條並未旋轉。如何在開始活動之前顯示進度對話框
package expir.java.file;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Button;
public class ExpirActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
Button mapButton = (Button)findViewById(R.id.first_button);
mapActivityIntent = new Intent(this, MyMapActivity.class);
pDialog = new ProgressDialog(this);
mapButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
pDialog.setMessage("Loading...");
new MyTask(pDialog).execute();
}
});
Button downloadButton = (Button)findViewById(R.id.second_button);
downloadButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
as.DownloadFromUrl("0", "null");;
}
});
Button parseButton = (Button)findViewById(R.id.third_button);
parseButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
SAXParserCreateDataBase gi = new SAXParserCreateDataBase();
try {
gi.start(ExpirActivity.this);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Button updateButton = (Button)findViewById(R.id.fourth_button);
updateButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
SAXParserCreateDataBase gi = new SAXParserCreateDataBase();
try {
gi.update(ExpirActivity.this);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public class MyTask extends AsyncTask<Void, Void, Void> {
public MyTask(ProgressDialog progress) {
this.progress = progress;
}
public void onPreExecute() {
progress.show();
}
public Void doInBackground(Void... unused) {
startActivity(mapActivityIntent);
return null;
}
public void onPostExecute(Void unused) {
progress.dismiss();
}
ProgressDialog progress;
}
DownloadPrimaryDate as = new DownloadPrimaryDate();
Intent mapActivityIntent;
ProgressDialog pDialog;
}
UPDATE:
logcat的結果:
FirstActivity.onCreate()
FirstActivity.onStart()
FirstActivity.onResume()
FirstActivity。 onPause()
SecondActivity.onCreate()
SecondActivity.onStart()
SecondActivity.onResume()
FirstActivity.onStop()
這就解釋了爲什麼有那麼。
UPDATE
在我明白我在想 - 不是所有我的嘗試之間的活動甚至實現這種轉變。
分享代碼。 –
如果你實際上是在兩個活動之間......你認爲你的進度條出現在哪個VIEWGROUP上? 由於UI被阻止,progreeBar被掛起! 我不認爲你可以在兩個活動之間顯示ProgressBar ...(在第一個onDestroy之前和第二個onCreate之前) –
@Aditya Nikhade你的陳述是有道理的,但是 - 據我所知,AsincTask允許單獨顯示活動中的對話本身(也許我錯了)。我不明白你可以如何在我設想的printsygt中實現 - 我試圖爲此分配一個單獨的線程,並執行代碼,當你按下按鈕時應該觸發 - 但它給了涵蓋這些結果。 –