无法在首选项侦听器中创建意向



我创建了一个Preference以允许用户注销。这就是我的root_preferences.xml:

<Preference
android:icon="@drawable/ic_logout"
android:key="logout_preference"
app:allowDividerAbove="true"
app:allowDividerBelow="true"
app:singleLineTitle="true"
app:title="Log Out" />

在我的SettingsActivity中,我有这样的代码:

val logOutPreference: Preference = findPreference("logout_preference")!!
logOutPreference.onPreferenceClickListener =
Preference.OnPreferenceClickListener {
FirebaseAuth.getInstance().signOut()
val intent = Intent(this, MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK.or(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
true
}

问题是它不允许我在OnPreferenceClickListener中创建Intent,当我删除Intent代码并只保留auth.signOut()时,我的应用程序会崩溃。我该如何解决这个问题?我想要它,这样当用户进入Settings屏幕时,他们可以点击log_preference,它会将他们从应用程序中注销。

在您的lamba内部,this指的是点击侦听器。像这样更改

val intent = Intent(this@ActivityNameHere, MainActivity::class.java)

其中ActivityNamerHere是活动的名称。

编辑:如果你在一个片段中,那么到这个

val intent = Intent(requireContext(), MainActivity::class.java)

最新更新