首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:可发现类型;不能将android.preference.Preference转换为androidx.preference.SeekBarPreference

Android:可发现类型;不能将android.preference.Preference转换为androidx.preference.SeekBarPreference
EN

Stack Overflow用户
提问于 2020-03-03 18:09:22
回答 2查看 1.3K关注 0票数 5

我正在尝试从我的应用程序设置(preferences.xml)的布局中检索preferences.xml。但是,当我试图将findPreference("font_size")转换为SeekBarPreference时,会得到以下错误:

不可转换类型;不能将android.preference.Preference转换为androidx.preference.SeekBarPreference

下面是与我的设置页(MyPreferencesAcitivty.java)对应的代码,-the错误发生在这一行:final SeekBarPreference fontSizeSeekBar = (SeekBarPreference) findPreference("font_size");

代码语言:javascript
运行
复制
package com.example.myapplication;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.Preference;
import android.widget.EditText;

import androidx.preference.SeekBarPreference;

public class MyPreferencesActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
    }

    public static class MyPreferenceFragment extends PreferenceFragment
    {
        @Override
        public void onCreate(final Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);

            // Retrieve the EditTextPreference demonstrating the font size
            final EditTextPreference fontSizeEditPreference = (EditTextPreference) findPreference("font_size_edittext");
            // Retrive the EditText component of the EditTextPreference
            final EditText fontSizeEditText = fontSizeEditPreference.getEditText();

            // Attach a listener to the font size seekbar (changes the size of the EditText)
            final SeekBarPreference fontSizeSeekBar = (SeekBarPreference) findPreference("font_size");

        }
    }

}

下面是用于我的设置页面布局(preferences.xml)的XML代码:

代码语言:javascript
运行
复制
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <com.kizitonwose.colorpreference.ColorPreference
        android:defaultValue="#FF8983"
        android:title="Addition Highlight Color"
        app:colorChoices="@array/highlight_colors"
        android:key="addition_highlight_color"/>

    <com.kizitonwose.colorpreference.ColorPreference
        android:defaultValue="#99ffcc"
        android:title="Removal Highlight Color"
        app:colorChoices="@array/highlight_colors"
        android:key="removal_highlight_color"/>

    <SeekBarPreference
        android:key="font_size"
        android:title="Font Size"
        android:min="12"
        android:max="32"
        android:defaultValue="14" />

    <EditTextPreference
        android:defaultValue="Default Value"
        android:key="font_size_edittext"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:title="A" />
</PreferenceScreen>

我已经在我的等级(应用级)中包含了以下实现:

代码语言:javascript
运行
复制
implementation 'androidx.preference:preference:1.0.0'
EN

Stack Overflow用户

发布于 2020-03-06 13:17:31

你在融入不同的偏好体系。SeekBarPreferenceandroidx.preference.Preference扩展而来,而使用android.preference.Preference

您必须在所有首选项中使用androidx.preference

代码语言:javascript
运行
复制
import androidx.preference.EditTextPreference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.Preference;

PreferenceActivity替换为AppCompatActivity,将getFragmentManager()替换为getSupportFragmentManager()

票数 9
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60513220

复制
相关文章

相似问题

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