2013-06-22 13 views
7

Ben Android'e yeni duyuyorum, bu yüzden programlı benim PreferenceFragment için EditTextPreference nesneleri eklemek nasıl biraz rehberliğine ihtiyacım var.PreferencesFragment'ime EditTextPreferences'ı nasıl program aracılığıyla ekleyebilirim?

Bir web hizmetindeki değerler listesinde yer alıyorum. Bunları başarıyla SharedPreferences'a kaydettim ve bunları URL'ler (yol bölümü) oluşturmak için kullanıyorum.

Ben bu değerleri düzenleyebilmek benim app kullanıcıları istiyorum fakat Google'da arama sürü sonra, programlı benim PreferenceFragment için EditTextPreference nesneleri nasıl ekleneceğini bana belli değil .

unutmayın, benim PreferenceFragmentSharedPreferences tercihi xml dosyası (PreferenceScreen) içine adları gibi sert kod değerler için iyi çalışıyor. Ayrıca, SharedPreferences'u nasıl alacağımı da biliyorum, o bölümü bana açıklamak zorunda olma konusunda endişelenmeyin.

benim PreferenceFragment ait onCreate yılında addPreferencesFromResource kullanın. Bunları onCreateView'a eklemem gerekir mi? PreferenceCategory'u alabileceğimi düşünüyor muyuz? Ama yine de, bunu nasıl yapacağımı bilmiyorum. Yardım için gerçekten minnettar olurum! PreferenceFragment için

// Kod

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; 
    } 
} 

XML Dosyası:

<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> 

cevap

0

o onCreateView yönteminde çalışıp çalışmadığını bilmiyorum ama yapar onViewCreated.

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    this.getPreferenceScreen().addPreference(new EditTextPreference(getActivity())); 
} 
13

Sen tercihleri ​​ekleyebilir, örneğin: İşte (PreferenceFragment bir alt sınıf içi) benim kodudur PreferenceFragment'in "onCreate" yönteminde EditTextPreference, CheckBox, vb.

@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); 
} 

önemli bir adım fragmanına boş PreferenceScreen takmak için bir kör XML ile addPreferencesFromResource(...) olup. Bu olmadan, "Tercih hiyerarşisinin kökü olan üst düzey tercih" yoktur, bu nedenle this.getPreferenceScreen() Null değerini döndürür. Kullandığım

XML sadece vardı: birisi yardım

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

</PreferenceScreen> 

Umut.

+8

Bu, xml'siz tercihler için iyi çalışır.Aslında kukla XML'ye gerek yok, bunun yerine şu kullanılabilir: PreferenceScreen screen = getPreferenceManager() .PreferenceScreen (getActivity()); setPreferenceScreen (ekran); – kat

İlgili konular