[英]Why isn't setVisibility working on Android ProgressBar?
如果ProgressBar可以在需要之前消失,那將是很好的。 在applyMenuChoice中使用setVisibility.progressBar有問題嗎? 在PrintStatusTask()。execute()中使用setVisibility.progressBar的問題是它在運行時崩潰應用程序。
public class Controller extends Activity {
private ProgressBar progressBar;
...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.controller);
progressBar = (ProgressBar)findViewById(R.id.progressBar);
...
private boolean applyMenuChoice(MenuItem item) {
switch (item.getItemId()) {
case R.id.menuStatus:
progressBar.setVisibility(View.VISIBLE);
new PrintStatusTask().execute();
progressBar.setVisibility(View.GONE);
...
progressBar.setVisibility(View.VISIBLE);
new PrintStatusTask().execute();
progressBar.setVisibility(View.GONE);
這就是你正在做的事情:1。顯示progressBar 2.在單獨的線程上生成任務3.隱藏progressBar
整個過程執行時間不會超過幾毫秒。 您需要在PrintStatusTask類的onPostExecute()
方法中隱藏進度條。
您需要了解AsyncTask的execute()
方法是一個執行另一個線程並且不等待它完成的調用。 這就是AsyncTask的重點。
您是否試圖在AsyncTask
隱藏ProgressBar
? 如果是這樣,它必須在onPreExecute
或onPostExecute
(與所有UI命令一樣)。
另外,使用這樣的東西:
private void toggleProgressBar() {
switch (progressBar.getVisibility()) {
case View.GONE:
progressBar.setVisibility(View.VISIBLE);
break;
default:
progressBar.setVisibility(View.GONE);
break;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.