【发布时间】:2020-09-27 11:44:13
【问题描述】:
我在这里有 2 节课:
#1 报警接收器
class AlarmReceiver: BroadcastReceiver() {
...
fun setRepeatingAlarm(context: Context) {} //the method that i want to call
}
#2 SettingFragment(附加到 SettingActivity)
SettingFragment(): PreferencefragmentCompat() {
private lateinit var reminder: String
private lateinit var language: String
private lateinit var alarmReceiver: AlarmReceiver
private lateinit var langPreference: Preference
private lateinit var reminderPreference: SwitchPreference
override fun onCreatePreferences(savedInstanceState: Bundle?, s: String?) {
addPreferencesFromResource(R.xml.settings)
init()
}
private fun init() {
reminder = resources.getString(R.string.key_reminder)
language = resources.getString(R.string.key_language)
alarmReceiver = AlarmReceiver()
langPreference = findPreference<Preference> (language) as Preference
reminderPreference = findPreference<SwitchPreference> (reminder) as SwitchPreference
}
private fun reminderSetting() {
// the method where i place the that method
}
我对如何从我调用的方法定义上下文参数感到困惑。 我尝试编写此代码:
alarmReceiver.setRepeatingAlarm(activity.applicationContext)
但我收到错误“FragmentActivity 类型的可空接收器只允许安全 (?.) 或非空断言 (!!.) 调用?” 如何解决这个问题呢?谢谢你:)
【问题讨论】:
-
activity根据类型定义可以是null。如果你确定这里不可能是null,写alarmReceiver.setRepeatingAlarm(activity!!.applicationContext)
标签: android-studio kotlin android-fragmentactivity