androidx.preference.SwitchPreferenceCompat 无法转换为 androidx.preference.PreferenceGroup
androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup
所以我想在我的 android 应用程序中创建一个选项菜单,但是当我在模拟器中单击它时,应用程序崩溃了,并且出现以下错误:
androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup
我真的不知道我做错了什么,我希望有人知道。
设置activity:
public class SettingsActivity extends AppCompatActivity {
public static final String KEY_PREF_EXAMPLE_SWITCH = "example_switch";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content,
new SettingsFragment()).commit();
}
}
片段class
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState,
String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
我的 MainActivity 中的方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
// Launch SettingsActivity
if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
编辑
这也是我的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<SwitchPreferenceCompat xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:defaultValue="false"
android:key="vega_preference"
android:summaryOff="@string/vega_off_string"
android:summaryOn="@string/vega_on_string"
android:title="@string/vega_switch_title" />
<SwitchPreference
android:defaultValue="false"
android:key="vegan_preference"
android:summaryOff="@string/vegan_off_string"
android:summaryOn="@string/vegan_on_string"
android:title="@string/vegan_switch_title" />
</SwitchPreferenceCompat>
androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup
代码段 setPreferencesFromResource(R.xml.preferences, rootKey)
引发了它,因为它期望 PreferenceGroup
而不是偏好视图。其中 SwitchPreferenceCompat
不是 PreferenceGroup
.
那是因为您使用了 SwitchPreferenceCompat
作为设置屏幕的根元素。相反,您需要使用从 PreferenceGroup
.
扩展的 PreferenceScreen
因此,要解决此问题,您需要确保首选项布局的根元素是 PreferenceScreen
所以我想在我的 android 应用程序中创建一个选项菜单,但是当我在模拟器中单击它时,应用程序崩溃了,并且出现以下错误:
androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup
我真的不知道我做错了什么,我希望有人知道。
设置activity:
public class SettingsActivity extends AppCompatActivity {
public static final String KEY_PREF_EXAMPLE_SWITCH = "example_switch";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content,
new SettingsFragment()).commit();
}
}
片段class
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState,
String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
我的 MainActivity 中的方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
// Launch SettingsActivity
if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
编辑 这也是我的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<SwitchPreferenceCompat xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:defaultValue="false"
android:key="vega_preference"
android:summaryOff="@string/vega_off_string"
android:summaryOn="@string/vega_on_string"
android:title="@string/vega_switch_title" />
<SwitchPreference
android:defaultValue="false"
android:key="vegan_preference"
android:summaryOff="@string/vegan_off_string"
android:summaryOn="@string/vegan_on_string"
android:title="@string/vegan_switch_title" />
</SwitchPreferenceCompat>
androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup
代码段 setPreferencesFromResource(R.xml.preferences, rootKey)
引发了它,因为它期望 PreferenceGroup
而不是偏好视图。其中 SwitchPreferenceCompat
不是 PreferenceGroup
.
那是因为您使用了 SwitchPreferenceCompat
作为设置屏幕的根元素。相反,您需要使用从 PreferenceGroup
.
PreferenceScreen
因此,要解决此问题,您需要确保首选项布局的根元素是 PreferenceScreen