首页 > 解决方案 > 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)

标签: androidandroid-studioandroidhttpclient

解决方案


推荐阅读