简体   繁体   English

如何修复Android中指定为非空的参数为空错误

[英]How to fix Parameter specified as non-null is null error in Android

WHY NOT ANY PEOPLE HEMP TO ME???为什么没有人喜欢我???

In my application i should implement MultiDex dependency, and i added this in gradle.build file and write some codes into application class !在我的应用程序中,我应该实现MultiDex依赖项,并将其添加到gradle.build文件中并将一些代码写入应用程序class
But after run application, show me force close error and not started application!但是在运行应用程序后,向我显示强制关闭错误并且未启动应用程序!
gradle.build : gradle.build :

implementation 'com.android.support:multidex:1.0.3'
implementation 'com.android.support:multidex-instrumentation:1.0.3'

BaseActivity class :基本活动类:

abstract class BaseActivity : AppCompatActivity() {
    /**
     * Set your page layout when initialize `layoutId`, Ex. R.layout.activity_main
     */
    abstract var layoutId: Int

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(layoutId)
    }

    /**
     * With below method, we can set custom font to all of activities
     */
    override fun attachBaseContext(newBase: Context) {
        super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
    }
}

Application class :应用类:

import android.app.Activity
import android.app.Application
import android.content.Context
import android.os.Bundle
import androidx.multidex.MultiDex
import com.adjust.sdk.Adjust
import com.adjust.sdk.AdjustConfig
import com.adjust.sdk.LogLevel
import com.app.android.R
import com.app.android.utils.ADJUST_APP_TOKEN
import com.crashlytics.android.Crashlytics
import com.crashlytics.android.answers.Answers
import com.crashlytics.android.answers.ContentViewEvent
import com.google.android.gms.analytics.GoogleAnalytics
import com.google.android.gms.analytics.HitBuilders
import com.google.android.gms.analytics.Tracker
import io.fabric.sdk.android.Fabric
import io.github.inflationx.calligraphy3.CalligraphyConfig
import io.github.inflationx.calligraphy3.CalligraphyInterceptor
import io.github.inflationx.viewpump.ViewPump

class App : Application() {

    private var adjustEnvironment: String = ""
    private lateinit var adjustConfig: AdjustConfig
    private lateinit var analytics: GoogleAnalytics
    private lateinit var tracker: Tracker

    override fun onCreate() {
        super.onCreate()
        //Calligraphy
        ViewPump.init(
            ViewPump.builder().addInterceptor(
                CalligraphyInterceptor(
                    CalligraphyConfig.Builder().setDefaultFontPath("fonts/IranSans.ttf")
                        .setFontAttrId(R.attr.fontPath)
                        .build()
                )
            ).build()
        )
        //GoodPres
        GoodPrefs.init(applicationContext)
        //Fabric initialize kits
        val fabric = Fabric.Builder(this)
            .kits(Answers())
//            .kits(Crashlytics())
            .debuggable(true)
            .build()
        Fabric.with(fabric)
        //Adjust
        adjustEnvironment = AdjustConfig.ENVIRONMENT_PRODUCTION
        adjustConfig = AdjustConfig(this, ADJUST_APP_TOKEN, adjustEnvironment, true)
        adjustConfig.setSendInBackground(true)
        adjustConfig.setLogLevel(LogLevel.SUPRESS)
        Adjust.onCreate(adjustConfig)
        registerActivityLifecycleCallbacks(AdjustLifecycleCallbacks())
        //Google Analytics
        analytics = GoogleAnalytics.getInstance(this)
    }

    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }

    //Adjust lifecycle method
    private class AdjustLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
        override fun onActivityResumed(activity: Activity) {
            Adjust.onResume()
        }

        override fun onActivityPaused(activity: Activity) {
            Adjust.onPause()
        }

        override fun onActivityStopped(activity: Activity) {}

        override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}

        override fun onActivityDestroyed(activity: Activity) {}

        override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle) {}

        override fun onActivityStarted(activity: Activity) {}
    }

    @Synchronized
    fun getDefaultTracker(): Tracker {
        if (tracker == null) {
            tracker = analytics.newTracker(R.xml.global_tracker)
        }
        return tracker
    }

    fun anserTracker(name: String, type: String, id: String) {
        Answers.getInstance().logContentView(
            ContentViewEvent()
                .putContentName(name)
                .putContentType(type)
                .putContentId(id)
        )
    }

    fun googleTracker(category: String, action: String, label: String) {
        val tracker: Tracker = getDefaultTracker()
        tracker.send(
            HitBuilders.EventBuilder()
                .setCategory(category)
                .setAction(action)
                .setLabel(label)
                .build()
        )
    }

Error message :错误信息 :

Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
    at com.app.android.ui.App$AdjustLifecycleCallbacks.onActivityCreated(Unknown Source:7)
    at android.app.Application.dispatchActivityCreated(Application.java:221)
    at android.app.Activity.onCreate(Activity.java:1071)
    at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:147)
    at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:317)
    at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:106)
    at com.app.android.ui.base.BaseActivity.onCreate(BaseActivity.kt:16)

Show me error for this line : import androidx.multidex.MultiDex显示这一行的错误: import androidx.multidex.MultiDex

How can i fix this issue?我该如何解决这个问题?

Try extending the MultiDexApplication() in your App class instead of Application()尝试在您的 App 类中扩展MultiDexApplication()而不是Application()

Edit编辑

Ok since the answer is in the same answer but in the comment , I would update this answer in case others need it :好的,因为答案在同一个答案中,但在评论中,如果其他人需要,我会更新此答案:

And also try this :也试试这个:

override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle?) {}

instead of代替

override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}

if you see the bundle in my comment is marked with "?"如果您看到我评论中的捆绑包标有“?”

override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle)

这里的savedInstanceState 参数应该可以为空(Bundle?),也

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 生成TransactionBuilder时出错:指定为非null的参数为null - Error when generating TransactionBuilder: Parameter specified as non-null is null 指定为非空的参数是 null 和 BottomSheetDialog - Parameter specified as non-null is null with BottomSheetDialog 指定为非空的参数是 null.SocketService - Parameter specified as non-null is null.SocketService java.lang.IllegalArgumentException:指定为非空的参数是 null:- android,应用程序启动但立即崩溃 - java.lang.IllegalArgumentException: Parameter specified as non-null is null: - android, app starting but crashing straight away java.lang.IllegalArgumentException:指定为非空的参数是 Java 代码中的 null 错误 - java.lang.IllegalArgumentException: Parameter specified as non-null is null error in Java code 错误:java.lang.IllegalArgumentException:指定为非null的参数为空Firebase事务Kotlin - Error: java.lang.IllegalArgumentException: Parameter specified as non-null is null firebase transaction kotlin FusedLocationProviderClient 因 java.lang.NullPointerException 崩溃:指定为非空的参数位置为 null - FusedLocationProviderClient crash with java.lang.NullPointerException: parameter location specified as non-null is null 由java.lang.IllegalArgumentException引起的指定为非null的参数为null - Parameter specified as non-null is null caused by java.lang.IllegalArgumentException 测试 Kotlin 中的非空参数 - Testing a non-null parameter in Kotlin android通过kotlin返回非空字体 - android return non-null typeface by kotlin
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM