我有一个MainActivity
,它扩展了自定义BaseActivity
。 onCreate
中的MainActivity
方法如下:
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Log.i("saved_instance_state", savedInstanceState.toString())
super.onCreate(savedInstanceState)
...
}
...
}
onCreate
中的BaseActivity
方法如下:
public abstract class BaseActivity extends AppCompatActivity {
...
@SuppressWarnings("ConstantConditions")
@CallSuper
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
...
}
我的问题是,即使super.onCreate(savedInstanceState)
方法中parameter specified as non-null is null
的类型为savedInstanceState
,onCreate
也会以某种方式引发错误Bundle?
,并且它会似乎与BaseActivity
(@Nullable Bundle
)中的匹配。
我的代码有问题吗,还是在编译器中有问题?
答案 0 :(得分:1)
非常抱歉。事实证明,这完全是另一类。该MainActivity
已连接到管理应用程序生命周期的经理类(扩展了Application.ActivityLifecycleCallbacks
)。 onActivityCreated(activity: Activity, savedInstanceState: Bundle)
是导致崩溃的原因,因为它期望的是非null的Bundle
。
所以我将其更改为可为空的Bundle
,并且效果很好。
编辑:在此方面向我提出建议的堆栈跟踪:
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.inovidea.playday/net.inovidea.playday.MainActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2505)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577)
at android.app.ActivityThread.access$1000(ActivityThread.java:164)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1462)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
**
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
at net.inovidea.playday.util.BackgroundManager.onActivityCreated(BackgroundManager.kt)
**
at android.app.Application.dispatchActivityCreated(Application.java:197)
at android.app.Activity.onCreate(Activity.java:950)
at android.support.v4.app.SupportActivity.onCreate(SupportActivity.java:66)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:321)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
at dev.rian.base.activity.BaseActivity.onCreate(BaseActivity.java:154)
at net.inovidea.playday.MainActivity.onCreate(MainActivity.kt:24)
at android.app.Activity.performCreate(Activity.java:6093)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2458)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577)
at android.app.ActivityThread.access$1000(ActivityThread.java:164)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1462)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)