簡體   English   中英

為什么setVisibility不適用於Android ProgressBar?

[英]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()方法中隱藏進度條。

您需要了解AsyncTaskexecute()方法是一個執行另一個線程並且不等待它完成的調用。 這就是AsyncTask的重點。

您是否試圖在AsyncTask隱藏ProgressBar 如果是這樣,它必須在onPreExecuteonPostExecute (與所有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM