gpt4 book ai didi

java - Android:不可转换的类型;无法将 android.preference.Preference 转换为 androidx.preference.SeekBarPreference

转载 作者:行者123 更新时间:2023-12-01 12:29:03 28 4
gpt4 key购买 nike

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

Inconvertible types; cannot cast android.preference.Preference to androidx.preference.SeekBarPreference



下面是我的设置页面对应的代码(MyPreferencesAcitivty.java)——错误发生在这一行: final SeekBarPreference fontSizeSeekBar = (SeekBarPreference) findPreference("font_size"); :
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 代码:
<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>

我在我的 gradle(应用程序级)中包含了以下实现:
implementation 'androidx.preference:preference:1.0.0'

最佳答案

你正在混合不同的偏好系统。 SeekBarPreference延伸自 androidx.preference.Preference当您使用 android.preference.Preference .
您必须使用 androidx.preference满足您的所有喜好。

import androidx.preference.EditTextPreference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.Preference;
也替换 PreferenceActivityAppCompatActivitygetFragmentManager()getSupportFragmentManager() .

关于java - Android:不可转换的类型;无法将 android.preference.Preference 转换为 androidx.preference.SeekBarPreference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60513220/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com