Kotlin中的super.onCreate(saveInstanceState)中的illegalArgumentsException

这里是我的BaseActivity.java,我把它从java转换为kotlin:

package me.wcy.music.activity import android.content.Context import android.content.Intent import android.graphics.Color import android.media.AudioManager import android.os.Build import android.os.Bundle import android.os.Handler import android.os.Looper import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.view.WindowManager import android.view.inputmethod.InputMethodManager import android.widget.EditText import me.wcy.music.R import me.wcy.music.application.AppCache import me.wcy.music.service.PlayService import me.wcy.music.utils.binding.ViewBinder import me.wcy.music.utils.permission.PermissionReq /** * 基类<br></br> * 如果继承本类,需要在 layout 中添加 [Toolbar] ,并将 AppTheme 继承 Theme.AppCompat.NoActionBar 。 * Created by wcy on 2015/11/26. */ abstract class BaseActivity : AppCompatActivity() { protected var mHandler = Handler(Looper.getMainLooper()) override fun onCreate(savedInstanceState: Bundle?) { try{ super.onCreate(savedInstanceState) }catch (e:Exception){ e.printStackTrace() } setSystemBarTransparent() volumeControlStream = AudioManager.STREAM_MUSIC } override fun setContentView(layoutResID: Int) { super.setContentView(layoutResID) initView() } override fun setContentView(view: View) { super.setContentView(view) initView() } override fun setContentView(view: View, params: ViewGroup.LayoutParams) { super.setContentView(view, params) initView() } private fun initView() { ViewBinder.bind(this) val mToolbar = findViewById(R.id.toolbar) as Toolbar ?: throw IllegalStateException("Layout is required to include a Toolbar with id 'toolbar'") setSupportActionBar(mToolbar) if (supportActionBar != null) { supportActionBar!!.setDisplayHomeAsUpEnabled(true) } } override fun onStart() { super.onStart() setListener() } protected open fun setListener() {} val playService: PlayService get() { val playService = AppCache.playService ?: throw NullPointerException("play service is null") return playService } protected fun checkServiceAlive(): Boolean { if (AppCache.playService == null) { startActivity(Intent(this, SplashActivity::class.java)) AppCache.clearStack() return false } return true } private fun setSystemBarTransparent() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // LOLLIPOP解决方案 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) window.statusBarColor = Color.TRANSPARENT } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // KITKAT解决方案 window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) } } override fun onOptionsItemSelected(item: MenuItem): Boolean { if (item.itemId == android.R.id.home) { finish() return true } return super.onOptionsItemSelected(item) } override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) PermissionReq.onRequestPermissionsResult(requestCode, permissions, grantResults) } fun showSoftKeyboard(editText: EditText) { editText.isFocusable = true editText.isFocusableInTouchMode = true editText.requestFocus() mHandler.postDelayed({ val inputManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager inputManager.showSoftInput(editText, 0) }, 200L) } fun hideSoftKeyboard() { if (currentFocus != null) { val inputManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager inputManager.hideSoftInputFromWindow(currentFocus!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS) } } } 

我已经添加“a”了? 在onCreate(saveInstanceState:Bundle)但仍然得到了IllegalArgumentException:指定为非null的参数为null:方法kotlin jvm.internal.Intrinsics.checkParameterIsNotNull,参数savesInstanceState

这是我的日志

 W/System: ClassLoader referenced unknown path: /data/app/me.wcy.music-1/lib/arm64 W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable W/System.err: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState W/System.err: at me.wcy.music.application.AppCache$ActivityLifecycle.onActivityCreated(AppCache.kt) W/System.err: at android.app.Application.dispatchActivityCreated(Application.java:195) W/System.err: at android.app.Activity.onCreate(Activity.java:956) W/System.err: at android.support.v4.app.BaseFragmentActivityGingerbread.onCreate(BaseFragmentActivityGingerbread.java:54) W/System.err: at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:319) W/System.err: at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:85) W/System.err: at me.wcy.music.activity.BaseActivity.onCreate(BaseActivity.kt:36) W/System.err: at me.wcy.music.activity.SplashActivity.onCreate(SplashActivity.kt:42) W/System.err: at android.app.Activity.performCreate(Activity.java:6372) W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2432) W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2539) W/System.err: at android.app.ActivityThread.access$900(ActivityThread.java:168) W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378) W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) W/System.err: at android.os.Looper.loop(Looper.java:150) W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5665) W/System.err: at java.lang.reflect.Method.invoke(Native Method) W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:822) W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 

这里是SplashActivity:

 package me.wcy.music.activity import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.ServiceConnection import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.AsyncTask import android.os.Bundle import android.os.IBinder import android.text.TextUtils import android.widget.ImageView import android.widget.TextView import java.io.File import java.util.Calendar import me.wcy.music.R import me.wcy.music.application.AppCache import me.wcy.music.http.HttpCallback import me.wcy.music.http.HttpClient import me.wcy.music.model.Splash import me.wcy.music.service.PlayService import me.wcy.music.utils.FileUtils import me.wcy.music.utils.Preferences import me.wcy.music.utils.ToastUtils import me.wcy.music.utils.binding.Bind import me.wcy.music.utils.permission.PermissionReq import me.wcy.music.utils.permission.PermissionResult import me.wcy.music.utils.permission.Permissions class SplashActivity : BaseActivity() { @Bind(R.id.iv_splash) private val ivSplash: ImageView? = null @Bind(R.id.tv_copyright) private val tvCopyright: TextView? = null private var mPlayServiceConnection: ServiceConnection? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_splash) val year = Calendar.getInstance().get(Calendar.YEAR) tvCopyright!!.text = getString(R.string.copyright, year) checkService() } private fun checkService() { if (AppCache.playService == null) { startService() showSplash() updateSplash() mHandler.postDelayed({ bindService() }, 1000) } else { startMusicActivity() finish() } } private fun startService() { val intent = Intent(this, PlayService::class.java) startService(intent) } private fun bindService() { val intent = Intent() intent.setClass(this, PlayService::class.java) mPlayServiceConnection = PlayServiceConnection() bindService(intent, mPlayServiceConnection, Context.BIND_AUTO_CREATE) } private inner class PlayServiceConnection : ServiceConnection { override fun onServiceConnected(name: ComponentName, service: IBinder) { val playService = (service as PlayService.PlayBinder).service AppCache.playService = playService PermissionReq.with(this@SplashActivity) .permissions(*Permissions.STORAGE) .result(object : PermissionResult { override fun onGranted() { scanMusic(playService) } override fun onDenied() { ToastUtils.show(getString(R.string.no_permission, Permissions.STORAGE_DESC, "扫描本地歌曲")) finish() playService.stop() } }) .request() } override fun onServiceDisconnected(name: ComponentName) {} } private fun scanMusic(playService: PlayService) { object : AsyncTask<Void, Void, Void>() { override fun doInBackground(vararg params: Void): Void? { playService.updateMusicList() return null } override fun onPostExecute(aVoid: Void) { startMusicActivity() finish() } }.execute() } private fun showSplash() { val splashImg = File(FileUtils.getSplashDir(this), SPLASH_FILE_NAME) if (splashImg.exists()) { val bitmap = BitmapFactory.decodeFile(splashImg.path) ivSplash!!.setImageBitmap(bitmap) } } private fun updateSplash() { HttpClient.getSplash(object : HttpCallback<Splash>() { override fun onSuccess(response: Splash?) { if (response == null || TextUtils.isEmpty(response.url)) { return } val url = response.url val lastImgUrl = Preferences.splashUrl if (TextUtils.equals(lastImgUrl, url)) { return } HttpClient.downloadFile(url, FileUtils.getSplashDir(AppCache.context), SPLASH_FILE_NAME, object : HttpCallback<File>() { override fun onSuccess(file: File?) { Preferences.saveSplashUrl(url) } override fun onFail(e: Exception?) {} }) } override fun onFail(e: Exception?) {} }) } private fun startMusicActivity() { val intent = Intent() intent.setClass(this, MusicActivity::class.java) intent.putExtras(getIntent()) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) startActivity(intent) } override fun onBackPressed() {} override fun onDestroy() { if (mPlayServiceConnection != null) { unbindService(mPlayServiceConnection) } super.onDestroy() } companion object { private val SPLASH_FILE_NAME = "splash" } }