【发布时间】:2018-06-10 20:23:57
【问题描述】:
我想使用DialogPreference 作为我的设置菜单(应用程序屏幕右上角的三个点)。这是我目前的做法:
class SettingsActivity : DialogPreference{
constructor(context : Context, attrs : AttributeSet) : super(context,attrs){
isPersistent = false
}
override fun onBindDialogView(view: View?) {
super.onBindDialogView(view)
(context as Activity).fragmentManager.findFragmentById(R.xml.preferences)
}
override fun onDialogClosed(positiveResult: Boolean) {
super.onDialogClosed(positiveResult)
}
}
我现在其实很困惑,因为我阅读了一些关于如何创建这些设置菜单的教程。我的第一种方法是PreferenceActivity,它使用PreferenceFragment:
class SettingsFragment : PreferenceFragment {
constructor() : super()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
addPreferencesFromResource(R.xml.preferences)
}
}
我不知道 - 我是否也必须在 DialogPreference 的情况下使用它?我的preferences.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<com.test.view.DialogExPreference
android:title="Title"
android:dialogMessage="Dialog Message"
android:negativeButtonText="test"/>
</PreferenceScreen>
我尝试像这样启动我的自定义 DialogPreference:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_settings -> {
var i = Intent(this,SettingsActivity::class.java)
startActivity(i)
return true
}
else -> super.onOptionsItemSelected(item)
}
}
但我收到此错误:
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.standardbenutzer.integrate/com.example.standardbenutzer.integrate.SettingsActivity}; have you declared this activity in your AndroidManifest.xml?
但如果我尝试将其添加到我的 AndroidManifest.xml - 没有可用于 android:name=".SettingsActivity" 的选项 - 为什么会这样?
【问题讨论】:
-
请问,“没有可用的选项”是什么意思?您必须修改清单并包含此定义,不是吗?
-
我的意思是Android Studio没有给我选择
SettingsActivity的选项(可能是因为它实际上没有Activity)
标签: android kotlin settings preferences