gpt4 book ai didi

android - 首选项 fragment setOnPreferenceClickListener 不工作

转载 作者:搜寻专家 更新时间:2023-11-01 08:47:13 28 4
gpt4 key购买 nike

我目前正在尝试在我的应用程序中实现首选项 fragment ,但我在设置 setOnPreferenceClickListener 时遇到了问题。似乎听众根本没有工作,代码也从未被实现。我只是暂时在听众中 toast 作为测试。我浏览了很多论坛,到目前为止还没有找到好的答案。代码如下。提前致谢!

设置 fragment .java

public class SettingsFragment extends PreferenceFragment {

private OnFragmentInteractionListener mListener;

private Preference mFontPreference;
private Preference mFontSizePreference;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.fragment_settings);

mFontPreference = findPreference("font_preference");
mFontSizePreference = findPreference("font_size_preference");

mFontPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
String key = preference.getKey();
Toast.makeText(getActivity(), key, Toast.LENGTH_LONG).show();
return true;
}
});
}

fragment 设置.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent" >

<PreferenceCategory android:title="Text Settings">

<ListPreference
android:enabled="true"
android:key="font_preference"
android:title="Font"
android:summary="Select a Font"
android:entries="@array/font_spinner_array"
android:entryValues="@array/font_spinner_array"/>

<ListPreference
android:enabled="true"
android:key="font_size_preference"
android:title="Font Size"
android:summary="Select a Font Size"
android:entries="@array/font_size_array"
android:entryValues="@array/font_size_value_array"/>

</PreferenceCategory>

</PreferenceScreen>

数组.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="font_spinner_array">
<item>System Font</item>
<item>Helvetica</item>
<item>Helvetica-Neue</item>
<item>Impact</item>
</string-array>
<string-array name="font_size_array">
<item>Small</item>
<item>Medium</item>
<item>Large</item>
</string-array>
<string-array name="font_size_value_array">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>

编辑:所以 Toast 没有工作,因为它没有 .show()。这是固定的,点击时显示“font_preference”。监听器正在工作,但我想提取用户单击的条目的值,而不是整个首选项的键。有没有办法做到这一点?

最佳答案

常见的错误。你忘了展示 toast :

Toast.makeText(getActivity(), key, Toast.LENGTH_LONG)
.show();

我坚持使用 Log.e 进行测试的原因之一:)

编辑:

findPreference("font_size_preference").setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
Log.e("", "New value is: " + o.toString());
// True to update the state of the Preference with the new value.
return true;
}
});

您可以在通常的地方阅读有关返回值的信息 - The Docs .

关于android - 首选项 fragment setOnPreferenceClickListener 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005629/

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