gpt4 book ai didi

android - 如何以编程方式将 EditTextPreferences 添加到我的 PreferenceFragment?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:49 24 4
gpt4 key购买 nike

我是 Android 的新手,所以我需要一些关于如何以编程方式EditTextPreference 对象添加到我的 PreferenceFragment 的指导。

我正在从 Web 服务中提取值列表。我已将它们成功保存到我的 SharedPreferences,并使用它们生成 URL(路径部分)。

我希望我的应用程序的用户能够编辑这些值,但在 Google 上进行了大量搜索后,我不清楚如何以编程方式添加EditTextPreference 反对我的 PreferenceFragment

请注意,我的 PreferenceFragment 对于 SharedPreferences 值工作正常,我将其作为名称硬编码到首选项 xml 文件 (PreferenceScreen) 中。我也知道如何获取我的SharedPreferences,所以不用担心必须向我解释这部分内容。

我在 PreferenceFragmentonCreate 中使用了 addPreferencesFromResource。我应该在 onCreateView 中添加它们吗?我在想我可以获得 PreferenceCategory 并将它们添加到那里?但同样,我不确定该怎么做。非常感谢您的帮助!

//代码

PrefsFragment.java:
package com.example.lorddoineedhelp;

import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = super.onCreateView(inflater, container, savedInstanceState);
// I am guessing I need to do something here?
return v;
}
}

PreferenceFragment 的 XML 文件:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Hard coded values -->
<PreferenceCategory
android:title="General">
<CheckBoxPreference
android:key="debug"
android:title="Debug"
android:summary="Enable Debug" />
</PreferenceCategory>
<PreferenceCategory android:title="Address">
<EditTextPreference
android:key="ipAddress"
android:title="IP Address"
android:summary="IP Address used for Image pings"
/>
<EditTextPreference
android:key="port"
android:title="Port"
android:summary="Port used for Image pings" />
</PreferenceCategory>

<!-- Where I want to add the values from my web service -->

<PreferenceCategory
android:title="Paths"
android:key="urlPaths">
</PreferenceCategory>
</PreferenceScreen>

最佳答案

您可以添加首选项,例如在 PreferenceFragment 的“onCreate”方法中以编程方式编辑 EditTextPreference、CheckBox 等。

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Load "dummy" (empty) preferences from an XML resource
addPreferencesFromResource(R.xml.preferences_channelconfig);

PreferenceScreen screen = this.getPreferenceScreen(); // "null". See onViewCreated.

// Create the Preferences Manually - so that the key can be set programatically.
PreferenceCategory category = new PreferenceCategory(screen.getContext());
category.setTitle("Channel Configuration");
screen.addPreference(category);

CheckBoxPreference checkBoxPref = new CheckBoxPreference(screen.getContext());
checkBoxPref.setKey(channelConfig.getName() + "_ENABLED");
checkBoxPref.setTitle(channelConfig.getShortname() + "Enabled");
checkBoxPref.setSummary(channelConfig.getDescription());
checkBoxPref.setChecked(channelConfig.isEnabled());

category.addPreference(checkBoxPref);
}

关键的一步是 addPreferencesFromResource(...),使用虚拟 xml 将空的 PreferenceScreen 附加到 fragment 。没有这个,就没有“作为首选项层次结构根的顶级首选项”,因此 this.getPreferenceScreen() 返回 Null。

我使用的 XML 只是:

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

</PreferenceScreen>

希望对某人有所帮助。

关于android - 如何以编程方式将 EditTextPreferences 添加到我的 PreferenceFragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255383/

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