У меня есть действие с предпочтениями, но оно выдает ошибку, когда я пытаюсь открыть его. Это никогда не запускает деятельность. Попробовал "Бандл"? вместо '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
}
}