小编Eka*_*nko的帖子

如何使用Android导航而不绑定到ViewModel(MVVM)中的UI?

我正在使用在Google I/O 2018上呈现的Android导航,似乎我可以通过绑定到某个视图或使用NavHost从Fragment获取它来使用它.但我需要的是根据几个条件从我的第一个片段导航到ViewModel中的另一个特定视图.因为ViewModel,我延伸AndroidViewModel,但我不明白下一步该怎么做.我无法转换getApplication为Fragment/Activity而我无法使用NavHostFragment.此外,我不能只导航到导航,onClickListener因为startFragment只包含一个导航ImageView.我该如何导航ViewModel

class CaptionViewModel(app: Application) : AndroidViewModel(app) {
private val dealerProfile = DealerProfile(getApplication())
val TAG = "REGDEB"


 fun start(){
    if(dealerProfile.getOperatorId().isEmpty()){
        if(dealerProfile.isFirstTimeLaunch()){
            Log.d(TAG, "First Time Launch")
            showTour()
        }else{
            showCodeFragment()
            Log.d(TAG, "Show Code Fragment")

        }
    }
}

private fun showCodeFragment(){
    //??
}

private fun showTour(){
    //??
}

}
Run Code Online (Sandbox Code Playgroud)

我的片段

class CaptionFragment : Fragment() {
private lateinit var viewModel: CaptionViewModel
private val navController by …
Run Code Online (Sandbox Code Playgroud)

android mvvm kotlin android-navigation android-jetpack

7
推荐指数
1
解决办法
2953
查看次数

尝试向服务器执行 POST 时收到 java.util.NoSuchElementException。服务器的答案是 204/success,但仍然引发异常

我正在向我的服务器进行 POST。结果是 204/成功代码,结果正文为空。java.util.NoSuchElementException 在服务器返回结果后立即引发。我的猜测是因为响应不包含正文(Void),但我非常不确定

我的界面

    @POST("register/")
    fun register(@Body phone: PhoneBody): Single<Void>
Run Code Online (Sandbox Code Playgroud)

手机机身 data class PhoneBody(val phone: String)

我的查询

  disposable += registrationRepository.register(phone)
            .addSchedulers()
            .doOnSubscribe { viewState.showLoading() }
            .doAfterTerminate { viewState.hideLoading() }
            .subscribe({it ->
                Log.d("PAPDEB", "$it Personal Acc Presenter")

            }, this::handleError)
Run Code Online (Sandbox Code Playgroud)

它永远不会进入订阅 lambda,它会直接进入 this::handle ,即

        if (t is ApiException) {
            viewState.showError(t.message)
        } else if (t is IOException) {
            viewState.showError("No internet connection")
        }

        if (BuildConfig.DEBUG) {
            t.printStackTrace()
        }
    }
Run Code Online (Sandbox Code Playgroud)
D/OkHttp: --> POST https://.../register/
D/OkHttp: Content-Type: application/json
D/OkHttp: Content-Length: 24
D/OkHttp: {"phone":"+79090000000"}
D/OkHttp: --> …
Run Code Online (Sandbox Code Playgroud)

android retrofit2

7
推荐指数
1
解决办法
2436
查看次数