Kotlin - Параметр, указанный как ненулевой, имеет значение null: метод kotlin .jvm.internal.Intrinsics.checkParameterIsNotNull, параметрvedInstanceState - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть действие с предпочтениями, но оно выдает ошибку, когда я пытаюсь открыть его. Это никогда не запускает деятельность. Попробовал "Бандл"? вместо 'Bundle', но это не сработало.

class SettingsActivity : AppCompatPreferenceActivity() {
override fun onCreate(savedInstanceState: Bundle) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.setDisplayHomeAsUpEnabled(true)
    // load settings fragment
    fragmentManager.beginTransaction()
        .replace(android.R.id.content, MainPreferenceFragment()).commit()
}

class MainPreferenceFragment : PreferenceFragment() {
    var key_video_resolution: ListPreference? = null
    var key_audio_source: ListPreference? = null
    var key_video_encoder: ListPreference? = null
    var key_video_fps: ListPreference? = null
    var key_video_bitrate: ListPreference? = null
    var key_output_format: ListPreference? = null
    var key_record_audio: SwitchPreference? = null
    var key_show_notification: SwitchPreference? = null
    override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        addPreferencesFromResource(R.xml.pref_main)
        key_record_audio =
            findPreference(getString(R.string.key_record_audio)) as SwitchPreference
        key_audio_source =
            findPreference(getString(R.string.key_audio_source)) as ListPreference
        key_audio_source!!.onPreferenceChangeListener = audioSourceListener
        key_video_encoder =
            findPreference(getString(R.string.key_video_encoder)) as ListPreference
        key_video_encoder!!.onPreferenceChangeListener = videoEncoderListener
        key_video_resolution =
            findPreference(getString(R.string.key_video_resolution)) as ListPreference
        key_video_resolution!!.onPreferenceChangeListener = videoResolutionListener
        key_video_fps = findPreference(getString(R.string.key_video_fps)) as ListPreference
        key_video_fps!!.onPreferenceChangeListener = videoFrameRateListener
        key_video_bitrate =
            findPreference(getString(R.string.key_video_bitrate)) as ListPreference
        key_video_bitrate!!.onPreferenceChangeListener = videoBitRateListener
        key_output_format =
            findPreference(getString(R.string.key_output_format)) as ListPreference
        key_output_format!!.onPreferenceChangeListener = outputFormatListener
        key_show_notification =
            findPreference(getString(R.string.key_show_notification)) as SwitchPreference
        setPreviousSelectedAsSummary()
    }

    private fun setPreviousSelectedAsSummary() {
        val prefs =
            PreferenceManager.getDefaultSharedPreferences(activity)
        val video_resolution = prefs.getString("key_video_resolution", null)
        val audio_enabled = prefs.getBoolean("key_record_audio", true)
        val audio_source = prefs.getString("key_audio_source", null)
        val video_encoder = prefs.getString("key_video_encoder", null)
        val video_frame_rate = prefs.getString("key_video_fps", null)
        val video_bit_rate = prefs.getString("key_video_bitrate", null)
        val output_format = prefs.getString("key_output_format", null)
        val show_notificaton = prefs.getBoolean("key_show_notification", false)
        /*Record Audio Prefs*/key_record_audio!!.isChecked = audio_enabled
        /*Audio Source Prefs*/if (audio_source != null) {
            val index = key_audio_source!!.findIndexOfValue(audio_source)
            key_audio_source!!.summary = key_audio_source!!.entries[index]
        } else {
            val defaultSummary =
                PreferenceManager.getDefaultSharedPreferences(key_audio_source!!.context)
                    .getString(key_audio_source!!.key, "")
            key_audio_source!!.summary = defaultSummary
        }
        /*Video Encoder Prefs*/if (video_encoder != null) {
            val index = key_video_encoder!!.findIndexOfValue(video_encoder)
            key_video_encoder!!.summary = key_video_encoder!!.entries[index]
        } else {
            val defaultSummary =
                PreferenceManager.getDefaultSharedPreferences(key_video_encoder!!.context)
                    .getString(key_video_encoder!!.key, "")
            key_video_encoder!!.summary = defaultSummary
        }
        /*Video Resolution Prefs*/if (video_resolution != null) {
            val index = key_video_resolution!!.findIndexOfValue(video_resolution)
            key_video_resolution!!.summary = key_video_resolution!!.entries[index]
        } else {
            val defaultSummary =
                PreferenceManager.getDefaultSharedPreferences(key_video_resolution!!.context)
                    .getString(key_video_resolution!!.key, "")
            key_video_resolution!!.summary = defaultSummary
        }
        /*Video Frame Rate Prefs*/if (video_frame_rate != null) {
            val index = key_video_fps!!.findIndexOfValue(video_frame_rate)
            key_video_fps!!.summary = key_video_fps!!.entries[index]
        } else {
            val defaultSummary =
                PreferenceManager.getDefaultSharedPreferences(key_video_fps!!.context)
                    .getString(key_video_fps!!.key, "")
            key_video_fps!!.summary = defaultSummary
        }
        /*Video Bit Rate Prefs*/if (video_bit_rate != null) {
            val index = key_video_bitrate!!.findIndexOfValue(video_bit_rate)
            key_video_bitrate!!.summary = key_video_bitrate!!.entries[index]
        } else {
            val defaultSummary =
                PreferenceManager.getDefaultSharedPreferences(key_video_bitrate!!.context)
                    .getString(key_video_bitrate!!.key, "")
            key_video_bitrate!!.summary = defaultSummary
        }
        /*Output Format Prefs*/if (output_format != null) {
            val index = key_output_format!!.findIndexOfValue(output_format)
            key_output_format!!.summary = key_output_format!!.entries[index]
        } else {
            val defaultSummary =
                PreferenceManager.getDefaultSharedPreferences(key_output_format!!.context)
                    .getString(key_output_format!!.key, "")
            key_output_format!!.summary = defaultSummary
        }
        /*Notification Prefs*/key_show_notification!!.isChecked = show_notificaton
    }

    /*Audio Source*/
    private val audioSourceListener =
        OnPreferenceChangeListener { preference, newValue ->
            val stringValue = newValue.toString()
            val listPreference =
                findPreference(getString(R.string.key_audio_source)) as ListPreference
            val index = listPreference.findIndexOfValue(stringValue)
            listPreference.summary = listPreference.entries[index]
            true
        }
    /*Video Encoder*/
    private val videoEncoderListener =
        OnPreferenceChangeListener { preference, newValue ->
            val stringValue = newValue.toString()
            val listPreference =
                findPreference(getString(R.string.key_video_encoder)) as ListPreference
            val index = listPreference.findIndexOfValue(stringValue)
            listPreference.summary = listPreference.entries[index]
            listPreference.value = stringValue
            true
        }
    /*Video Resolution*/
    private val videoResolutionListener =
        OnPreferenceChangeListener { preference, newValue ->
            val stringValue = newValue.toString()
            val listPreference =
                findPreference(getString(R.string.key_video_resolution)) as ListPreference
            val index = listPreference.findIndexOfValue(stringValue)
            listPreference.summary = listPreference.entries[index]
            listPreference.value = stringValue
            true
        }
    /*Video Frame Rate*/
    private val videoFrameRateListener =
        OnPreferenceChangeListener { preference, newValue ->
            val stringValue = newValue.toString()
            val listPreference =
                findPreference(getString(R.string.key_video_fps)) as ListPreference
            val index = listPreference.findIndexOfValue(stringValue)
            listPreference.summary = listPreference.entries[index]
            listPreference.value = stringValue
            true
        }
    /*Video Bit Rate*/
    private val videoBitRateListener =
        OnPreferenceChangeListener { preference, newValue ->
            val stringValue = newValue.toString()
            val listPreference =
                findPreference(getString(R.string.key_video_bitrate)) as ListPreference
            val index = listPreference.findIndexOfValue(stringValue)
            listPreference.summary = listPreference.entries[index]
            listPreference.value = stringValue
            true
        }
    /*outputFormat*/
    private val outputFormatListener =
        OnPreferenceChangeListener { preference, newValue ->
            val stringValue = newValue.toString()
            val listPreference =
                findPreference(getString(R.string.key_output_format)) as ListPreference
            val index = listPreference.findIndexOfValue(stringValue)
            listPreference.summary = listPreference.entries[index]
            listPreference.value = stringValue
            true
        }
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (item.itemId == android.R.id.home) {
        onBackPressed()
    }
    return super.onOptionsItemSelected(item)
}

companion object {
    private val TAG = SettingsActivity::class.java.simpleName
}
}

, и я получаю исключение:

java .lang.IllegalArgumentException: параметр, указанный как не- null is null: метод kotlin .jvm.internal.Intrinsics.checkParameterIsNotNull, параметр saveInstanceState в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 2913) в android .app.ActivityThread.handleActivityThread.handleLaunch . java: 3048) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 108) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 68) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1808) в android .os.Handler. dispatchMessage (Handler. java: 106) в android .os.Looper.l oop (Looper. java: 193) в android .app.ActivityThread.main (ActivityThread. java: 6669 ) в java .lang.reflect.Mehod.invoke (N ative Method) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 858 ) Вызывается: java .lang.IllegalArgumentException: параметр, указанный как ненулевое, имеет значение null: метод kotlin .jvm.internal.Intrinsics.checkParameterIsNotNull, параметр saveInstanceState в com.evonative.screenrecorder.SettingsActivity.known: Source :onCreate ( 2) в android .app.Activity.performCreate (Activity. java: 7136) в android .app.Activity.performCreate (Activity. java: 7127) в android .app.Instrumentation.callActivityOnCreate (Инструментарий. java: 1271) в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 2893) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 3048) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 108) в android .app.servertransaction. TransactionExecutor.execute (TransactionExecutor. java: 68) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1808) в android .os.Handler.dispatchMessage (Обработчик. java: 106) на android .os.Looper.l oop (Looper. java: 193) на android .app.ActivityThread.main (ActivityThread. java: 6669) на java .lang. refle.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) в com. android .internal.os.ZygoteInit.main (ZygoteInit . java: 858)

Любая помощь будет принята с благодарностью. Спасибо

** AppCompatPreferenceActivity **

abstract class AppCompatPreferenceActivity : PreferenceActivity() {
private var mDelegate: AppCompatDelegate? = null
override fun onCreate(savedInstanceState: Bundle) {
    delegate!!.installViewFactory()
    delegate!!.onCreate(savedInstanceState)
    super.onCreate(savedInstanceState)
}

override fun onPostCreate(savedInstanceState: Bundle) {
    super.onPostCreate(savedInstanceState)
    delegate!!.onPostCreate(savedInstanceState)
}

val supportActionBar: ActionBar?
    get() = delegate!!.supportActionBar

fun setSupportActionBar(toolbar: Toolbar?) {
    delegate!!.setSupportActionBar(toolbar)
}

override fun getMenuInflater(): MenuInflater {
    return delegate!!.menuInflater
}

override fun setContentView(@LayoutRes layoutResID: Int) {
    delegate!!.setContentView(layoutResID)
}

override fun setContentView(view: View) {
    delegate!!.setContentView(view)
}

override fun setContentView(
    view: View,
    params: ViewGroup.LayoutParams
) {
    delegate!!.setContentView(view, params)
}

override fun addContentView(
    view: View,
    params: ViewGroup.LayoutParams
) {
    delegate!!.addContentView(view, params)
}

override fun onPostResume() {
    super.onPostResume()
    delegate!!.onPostResume()
}

override fun onTitleChanged(title: CharSequence, color: Int) {
    super.onTitleChanged(title, color)
    delegate!!.setTitle(title)
}

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    delegate!!.onConfigurationChanged(newConfig)
}

override fun onStop() {
    super.onStop()
    delegate!!.onStop()
}

override fun onDestroy() {
    super.onDestroy()
    delegate!!.onDestroy()
}

override fun invalidateOptionsMenu() {
    delegate!!.invalidateOptionsMenu()
}

private val delegate: AppCompatDelegate?
    private get() {
        if (mDelegate == null) {
            mDelegate = AppCompatDelegate.create(this, null)
        }
        return mDelegate
    }
}

1 Ответ

0 голосов
/ 14 апреля 2020

Исправлена ​​ошибка, из-за которой исходили родительские и дочерние классы. Я сделал Bundle обнуляемым и изменил его на 'Bundle?' везде в родительском и дочернем классах, таких как:

В SettingsActicity:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.setDisplayHomeAsUpEnabled(true)
    // load settings fragment
    fragmentManager.beginTransaction()
        .replace(android.R.id.content, MainPreferenceFragment()).commit()
}

, а затем MainPreferenceFragment внутри класса SettingsActivity. И также сделал это изменение в методах onCreate и onPostCreate AppCompatPreferenceActivity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...