首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能将androidx.preference.SwitchPreferenceCompat转换为androidx.preference.PreferenceGroup

不能将androidx.preference.SwitchPreferenceCompat转换为androidx.preference.PreferenceGroup
EN

Stack Overflow用户
提问于 2022-03-16 20:23:24
回答 1查看 111关注 0票数 1

因此,我试图在我的android应用程序中创建一个选项菜单,但是当我在模拟器中单击它时,应用程序就会崩溃,并得到以下错误:

代码语言:javascript
复制
androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup

我不知道我在这里做了什么,我希望有人知道。

设置活动:

代码语言:javascript
复制
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();
    }
}

片段类

代码语言:javascript
复制
public class SettingsFragment extends PreferenceFragmentCompat {

    @Override
    public void onCreatePreferences(Bundle savedInstanceState,
                                    String rootKey) {
        setPreferencesFromResource(R.xml.preferences, rootKey);
    }

}

方法在我的MainActivity中:

代码语言:javascript
复制
    @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);
    }

编辑这里也是我的布局文件:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 20:40:16

androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup

代码片段setPreferencesFromResource(R.xml.preferences, rootKey)是引发这种情况的原因,因为它期望使用PreferenceGroup而不是首选项视图。其中SwitchPreferenceCompat不是PreferenceGroup

这是因为您使用SwitchPreferenceCompat作为设置屏幕的根元素。相反,您需要使用从PreferenceScreen扩展而来的PreferenceGroup

因此,要解决这个问题,需要确保首选项布局的根元素是PreferenceScreen

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71503813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档