java - 如何修复指定为非空的参数是Android中的空错误
问题描述
为什么没有人对我麻麻???
在我的应用程序中,我应该实现MultiDex依赖项,并将其添加到gradle.build文件中并将一些代码写入应用程序 class
!
但是运行应用程序后,显示强制关闭错误并且没有启动应用程序!
gradle.build :
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.android.support:multidex-instrumentation:1.0.3'
BaseActivity 类:
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))
}
}
应用类:
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()
)
}
错误信息 :
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)
显示此行的错误:import androidx.multidex.MultiDex
我该如何解决这个问题?
解决方案
尝试MultiDexApplication()
在您的 App 类中扩展而不是Application()
编辑
好的,因为答案在同一个答案中,但在评论中,我会更新这个答案以防其他人需要它:
也试试这个:
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle?) {}
代替
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
如果您在我的评论中看到捆绑包标有“?”
推荐阅读
- powershell - 获取邮箱文件夹权限
- node.js - 如何在nodejs中显示来自json文件的图像
- java - 在不使用 O(n²) 时间的情况下检查 8-puzzle 问题的可解性
- html - 在覆盖 Django 模板中使用本地 Chart.js 渲染图表
- log4net - 如果在配置中指定了多个记录器而不仅仅是根设置,log4net 是否会对性能产生影响?
- c# - 将数据表转换为字符串 - 正在生成此错误“字符串”不包含“用户代码”的定义
- typescript - keyof 不提取接口的命名键
- android - 找不到 com.androidx.multidex:multidex:2.0.1
- typescript - 是否可以在打字稿中动态定义类型?
- node.js - 如何为客户端设置谷歌分析 API?