从ViewModel提取数据时如何显示ProgressDialog

时间:2019-02-03 08:07:43

标签: android android-architecture-components android-livedata android-mvvm

我想在从Code: LISessionManager.getInstance(getApplicationContext()).init(this, buildScope(), new AuthListener() { @Override public void onAuthSuccess() { // Authentication was successful. You can now do // other calls with the SDK. Toast.makeText(MainActivity.this,"Authrization Success",Toast.LENGTH_SHORT).show(); fetchDetailsLinkedin(); } @Override public void onAuthError(LIAuthError error) { Log.e("Auth Error",error.toString()); // Handle authentication errors Toast.makeText(MainActivity.this,"Authrization Failed",Toast.LENGTH_SHORT).show(); } }, true); 提取数据时显示com.example.loginintegration,当我第一次获取数据时,它工作正常,但是当我想从API刷新数据时,ProgressDialog启动而不会停止

我创建了ViewModel并尝试管理可见性,但是它不起作用

这是我从“活动”中刷新数据的方式

ProgressDialog

下面是我的ViewModel类

MutableLiveData<Boolean>()

1 个答案:

答案 0 :(得分:0)

我尚未测试您的代码,但我认为您的问题出在viewmodel中的getNorthTrams()函数中。

首次获取数据时,未初始化电车,正在进行api调用,并且仅在onCompleted上,您设置isNorthUpdating.value = false。该代码有效。

但是当您刷新数据时,电车已经初始化。因此,在任何情况下isNorthUpdating.value = false都不会导致进度对话框无法关闭。

所以我认为您应该在视图模型中处理其他情况。

    fun getNorthTrams(): MutableLiveData<TramModel> {
    isNorthUpdating.value = true
    if (!::trams.isInitialized) {
        trams = MutableLiveData()
        callTokenAPI()
    }else{
        //do your thing for refresh
        isNorthUpdating.value = false
    }
    return trams
}

此外,在api调用中,如果发生错误,则应将isNorthUpdating设置为false并显示一些错误消息。否则,即使api调用发生错误,进度对话框也始终会显示。