Android 安卓没有';I don’我不参加集体活动
下午好,我遇到了以下问题:我正在尝试获取商店列表,但得到的响应为空。 从debag判断,它甚至没有进入DataAccessStrategy中的协同程序。 应用程序中的其他地方也有类似的代码,我不知道问题出在哪里 LoginViewModelAndroid 安卓没有';I don’我不参加集体活动,android,kotlin,retrofit,retrofit2,kotlin-coroutines,Android,Kotlin,Retrofit,Retrofit2,Kotlin Coroutines,下午好,我遇到了以下问题:我正在尝试获取商店列表,但得到的响应为空。 从debag判断,它甚至没有进入DataAccessStrategy中的协同程序。 应用程序中的其他地方也有类似的代码,我不知道问题出在哪里 LoginViewModel class LoginViewModel @ViewModelInject constructor(private val remoteDataSource: OrderRemoteDataSource,
class LoginViewModel @ViewModelInject constructor(private val remoteDataSource: OrderRemoteDataSource,
private val ordersRepository: OrdersRepository) :
ViewModel() {
var shops = ordersRepository.getShops()
fun showDialog(){
var shopList: List<Shop>? = shops.value?.data
var names:List<String?> = shopList!!.map{it.customName}
MaterialAlertDialogBuilder(LOGIN_ACTIVITY)
.setTitle("Выбрать магазин")
.setItems(names.toTypedArray()) { dialog, which ->
Log.d("LOGIN VIEW MODEL", "selected")
}
.show()
}
OrderRemoteDataSource
class OrderRemoteDataSource @Inject constructor(
private val orderService: OrderService
) : BaseDataSource() {
suspend fun getShops() = getResult { orderService.getAllShops() }
interface OrderService {
@GET("shops/all")
suspend fun getAllShops(): Response<ResultShops>
companion object {
const val MAUMarket_API_URL = "MYURL.com"
}
}
订单服务
class OrderRemoteDataSource @Inject constructor(
private val orderService: OrderService
) : BaseDataSource() {
suspend fun getShops() = getResult { orderService.getAllShops() }
interface OrderService {
@GET("shops/all")
suspend fun getAllShops(): Response<ResultShops>
companion object {
const val MAUMarket_API_URL = "MYURL.com"
}
}
接口订单服务{
@获取(“商店/全部”)
暂停趣味getAllShops():响应
伴星{
const val MAUMarket_API_URL=“MYURL.com”
}
}
E/AndroidRuntime:致命异常:主
进程:ru.gkomega.navigation,PID:4349
java.lang.NullPointerException
在ru.gkomega.maumarket.ui.login.LoginViewModel.showDialog(LoginViewModel.kt:36)
在ru.gkomega.maumarket.ui.login.LoginFragment$onViewCreated$1.onClick(LoginFragment.kt:50)
在android.view.view.performClick上(view.java:7259)
在com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)上
在android.view.view.performClickInternal(view.java:7236)
在android.view.view.access$3600(view.java:801)
在android.view.view$PerformClick.run(view.java:27892)
位于android.os.Handler.handleCallback(Handler.java:883)
位于android.os.Handler.dispatchMessage(Handler.java:100)
位于android.os.Looper.loop(Looper.java:214)
位于android.app.ActivityThread.main(ActivityThread.java:7356)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
我很高兴能得到任何帮助,谢谢
private fun obser() {
mViewModel.shopsLiveData.observe(viewLifecycleOwner, Observer {
when (it.status) {
Resource.Status.SUCCESS -> {
//binding.progressBar.visibility = View.GONE
main.isRefreshing = false
if (!it.data.isNullOrEmpty()) Log.i("LEL",it.data.toString())
}
Resource.Status.ERROR ->
Toast.makeText(requireContext(), it.message, Toast.LENGTH_SHORT).show()
Resource.Status.LOADING -> {
main.isRefreshing = true
//binding.progressBar.visibility = View.VISIBLE
}
}
})
}
试试它的示例代码。可能不是更好的方式,但它可能正在工作您希望在“LoginViewModel.showDialog(LoginViewModel.kt:36)第36行”中访问哪些数据