2017-01-10 76 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()) –

相关问题