【发布时间】:2017-07-23 16:36:39
【问题描述】:
我为我的应用启动了一个 ProgressDialog,显示“正在连接”。因此,为我的 Firebase 数据库和 onDataChange 方法添加监听器,我想将我的 ProgressDialog 的文本更改为“我已连接,现在我正在下载数据”。稍后循环遍历数据库中的可迭代结果并隐藏 ProgressDialog。
我的问题是 ProgressDialog 显示,但我无法对其进行更新或更改消息。什么都没有。
我正在尝试使用 RunOnUIThread,但没有任何效果。
你能帮我实现我的目标吗,或者说我做不到。
DialogHandler.showLoadingDialog(InitActivity.this, R.string.connecting,
"Connecting", true, false);
FDatabaseManager.getInstance().addListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
MyObject obj;
InitActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
DialogHandler.updateLoadingDialog(R.string.downloading, "¡Ready! We're downloading data. Please wait.");
}
});
for (DataSnapshot i : dataSnapshot.getChildren()) {
obj= i.getValue(MyObject.class);
if (SQLiteManager.getInstance(InitActivity.this).existOn(SQLiteContract.TABLE_OBJS, obj.getId())) {
ContentValues values = new ContentValues();
values.put(SQLiteContract.ObjColumns.FIELD_LATITUDE, obj.getCoordinates().getLatitude());
values.put(SQLiteContract.ObjColumns.FIELD_LONGITUDE, obj.getCoordinates().getLongitude());
SQLiteManager.getInstance(InitActivity.this).insert(SQLiteContract.TABLE_OBJ, values);
}
}
DialogHandler.dismissLoadingDialog();
}
@Override
public void onCancelled(DatabaseError databaseError) {
DialogHandler.dismissLoadingDialog();
}
}, Constants.DB_OBJS);
这是 ProgressDialog 的代码。
public static void showLoadingDialog(final Context context, final int title, final String message, final boolean indeterminate, final boolean cancelable) {
dismissLoadingDialog();
loadingDialog = new ProgressDialog(context);
loadingDialog.setTitle(title);
loadingDialog.setMessage(message);
loadingDialog.setIndeterminate(indeterminate);
loadingDialog.setCancelable(cancelable);
loadingDialog.show();
}
public static void updateLoadingDialog(final int title, final String message) {
if (loadingDialog != null && loadingDialog.isShowing()) {
loadingDialog.setTitle(title);
loadingDialog.setMessage(message);
}
}
当我尝试在任何方法上进行此操作时,都可以正常工作,但是当我尝试在 Firebase 数据库的侦听器上进行操作时,则无法正常工作。
感谢您的帮助。
【问题讨论】:
标签: android firebase firebase-realtime-database progressdialog