2017-01-10 69 views
0

我希望在加載數據時顯示進度。它運作良好。但只有一次。如果我反覆按壓,則會發生錯誤。到處搜索,嘗試了一切。請幫忙。從Firebase數據庫加載數據時顯示進度

工作代碼。

a.showProgressDialog(); 

     mUsersDatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
         a.hideProgressDialog(); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
      } 

     }); 

更新。這裏是我得到的錯誤代碼。

無法添加窗口 - 令牌[email protected]無效;你的活動正在運行?

試過。計數對顯示 - dissmiss。等於。沒有幫助。 試過。讓showProgress不是靜態的。沒有幫助。 會嘗試把ui線程解僱嗎?應該幫助。稍後更新。

回答

1

showProgressDialog方法是這樣的。

public void showProgressDialog() { 
    if (mProgressDialog == null) { 
     mProgressDialog = new ProgressDialog(a); 
     mProgressDialog.setMessage("Loading..."); 
     mProgressDialog.setIndeterminate(true); 
    } 

    if (!a.isFinishing()) { 
     mProgressDialog.show(); 
    } 

} 

經過測試並深入研究之後,我發現問題所在。由於這是偏好活動,而且片段是靜態的,所以添加的這個方法也是靜態的。後來,我認爲這可能是不好的,並將其移至靜態。

它一眼就沒有幫助,但休息後,我又看了一遍,發現mProgressDialog變量仍然是靜態的。將其更改爲非靜態,並解決了我的崩潰問題。

謝謝大家的幫助。

+1

什麼是上面的片段?如果(!a.isFinishing()) –

相關問題