android - android - 在某些手机上改造返回 null
问题描述
这很奇怪,我的代码在低于 8 的 android 上运行良好,在一些 android 8 的手机上运行良好,但在一些 android 8 的三星上,它返回 null /
这是我的代码:
getHomePage = ApiConnection.client.create(GetHomePage::class.java)
getHomePage.getHomePage(Func.getUid(this))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ result ->
val Gallery = result.gallery;
val Category = result.category
val Product = result.products
if (Gallery != null)
GalleryMaker(this@MainActivity, Gallery)
if(Category!=null){
val catAdapter = CategoryAdapter(this@MainActivity, Category);
rcCats?.adapter = catAdapter
catAdapter.setOnItemClickListener(object : CategoryAdapter.ClickListener {
override fun onClick(pos: Int, aView: View) {
val item = Category.get(pos)
val intent: Intent = Intent(this@MainActivity, Products::class.java)
intent.putExtra("title", item.name)
intent.putExtra("id", item.id)
startActivity(intent)
}
})
}
if(Product!=null){
val productsAdapter = ProductAdapter(this@MainActivity, Product);
rcProducts?.adapter = productsAdapter
}
customProgressDialog?.dismiss("")
}, { error ->
Log.v("this", error.printStackTrace().toString())
})
category 、 product 和 category 的结果为 null 。再一次,同一个应用程序在 android pre 8 上运行良好,它在另一部手机上运行良好,在 android 8 上运行良好,但在三星 android 版本 8 上运行,它不起作用并返回 null
这是我的 api 连接:
object ApiConnection {
val BaseUrl = Const.BaseUrl
val client: Retrofit
get() {
val gson = GsonBuilder()
.setLenient()
.create()
///for Logging
val interceptor = HttpLoggingInterceptor()
interceptor.level = HttpLoggingInterceptor.Level.BODY
val client = OkHttpClient.Builder().addInterceptor(interceptor).build()
var retrofit = Retrofit.Builder()
.baseUrl(BaseUrl)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.build()
return retrofit
}
}
这是我为听众放置 !=null 之前的日志猫
Fatal Exception: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method b.a.a.a.b, parameter list
at ir.s.cardiomeds.Adapters.CategoryAdapter.(Unknown Source:7)
at ir.s.cardiomeds.MainActivity$getData$1.accept(Unknown Source:29)
at ir.s.cardiomeds.MainActivity$getData$1.accept(Unknown Source:2)
at io.reactivex.internal.observers.ConsumerSingleObserver.onError(Unknown Source:7)
at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(Unknown Source:14)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
解决方案
推荐阅读
- ceres-solver - Ceres-Solver 因“终止:残差和雅可比评估失败”而失败。当非静态变量用于定义雅可比 for 循环时
- azure-pipelines - Azure Pipelines 构建失败并显示“来自守护程序的错误响应:容器
没有运行” - c - 如何在给定坐标的情况下隔离特定的布尔岛?
- c# - c# 程序如果由 jenkins 执行,则无法获取我的 IP 地址
- java - 在开始新活动之前等待 HttpRequest 完成
- php - 插件激活后自动创建一个带有古腾堡 HTML 块的页面
- c++ - 我已经包含了一个 .h 文件,我似乎得到了一个“未定义的错误引用”
- netsuite - 在 Netsuite 中 - 如何将一个国家/地区移至列表顶部?
- jshint - 如何安装 JSHint
- java - 如何在鼠标监听器中添加参数