2016-03-28 29 views
0

是否有可能在OnCreateView或OnCreate中返回視圖後調用將更改ui的方法?我想顯示一個進度視圖並隱藏一個列表視圖,直到從另一個活動的某個異步任務完成加載。然而,每當我打開片段與此代碼:調用onCreateView()之後更改ui的方法?

boolean doneOnce = false; 
    do { 
     if(!doneOnce) { 
      showProg(true); 
      doneOnce = true; 
     } 
    }while (Values.courses == null); 

通過它凍結,然後彈出一個導航菜單,因爲OnCreateView將返回膨脹的觀點在此之前被調用。任何解決方案

+0

「我想顯示一個進度查看和隱藏列表視圖,直到事情已經完成了從另一個活動的異步任務裏面裝載」 - 那麼無論是在佈局和切換它們各自的可見性(從'GONE'有'可見'或反之亦然)。 「然而,無論何時我使用此代碼打開片段」 - 忙碌的循環從來都不是Android中GUI相關工作的正確答案,並且在軟件工程中的任何地方都很難找到正確的答案。 – CommonsWare

回答

0

這樣的循環會阻止用戶界面。如何使用Runnable,隨着您的任務和您所需的可見性更改?喜歡的東西:

class MyRunnable implements Runnable { 
    @Override 
    public void run() { 
     //perform your task here 
     something.setVisibility(View.VISIBLE); 
    } 
} 

,並通過發佈此可運行:

private android.os.Handler mHandler= new android.os.Handler(); 
mHandler.post(new MyRunnable()); 

編輯:也許你仍然可以使用一個可運行的,但是從你的主要活動。

boolean doneOnce = false; 

class MyRunnable implements Runnable { 
    @Override 
    public void run() { 
     if(!doneOnce) { 
      showProg(true); 
      doneOnce = true; 
     } 
     if (Values.courses == null) { 
      mHandler.postdelayed(this, 100); //or mHandler.post(this); 
     } 
    } 
}  
+0

謝謝你的回答,但是這個任務是在另一個活動中的異步開始,無論如何檢查它是否在該活動之外完成?該任務將靜態變量Values.courses設置爲某些內容,因此我希望它在(Values.courses == null)時顯示進度。有沒有辦法做到這一點? – Engima

相關問題