我是新來的Android,所以我需要如何編程對象添加EditTextPreference我PreferenceFragment一些指導。如何以編程方式將EditTextPreferences添加到我的PreferenceFragment?
我正在拉一個web服務的值列表。我已將它們成功保存到我的SharedPreferences,並使用它們生成URL(路徑部分)。
我想我的應用程序的用戶能夠編輯這些值,但許多在谷歌搜索後,這是我不清楚如何編程添加EditTextPreference對象,以我的PreferenceFragment 。
請注意,我PreferenceFragment是爲SharedPreferences值我硬代碼名稱爲偏好XML文件(PreferenceScreen)工作的罰款。我也知道如何獲得我的SharedPreferences,所以不必擔心必須向我解釋這一部分。
我用addPreferencesFromResource在的onCreate我PreferenceFragment的。我應該將它們添加到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>
這適用於無xml偏好。實際上不需要虛擬XML,可以使用它: PreferenceScreen screen = getPreferenceManager()。createPreferenceScreen(getActivity()); setPreferenceScreen(screen); – kat