2016-05-21 9 views
2

Что такое хороший способ показать текущее значение SeekBarPreference в ScreenPreference. Я попытался вставить textview, но приложение сработает. Любые предложения?Показать текущее значение SeekBarPreference в ScreenPreference

preferences.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <SeekBarPreference 
     android:id="@+id/seekbar_pref" 
     android:key="seekbar_x" 
     android:title="Value" 
     android:defaultValue="1" 
     android:max="60"/> 
    </PreferenceScreen> 

Preferences.java предпочтения общественного класса распространяется 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); 
    } 
} 

Main.java

private SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { 
     @Override 
     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
      Log.e("SHARED", "VAL: " + sharedPreferences.getInt("seekbar_x",10)); 
     } 
    }; 

ответ

0

В вашем методе onCreate добавить эту строку в конце (после добавления предпочтений):

SeekBarPreference pref = (SeekBarPreference) findPreference("seekbar_pref"); 

Затем добавить слушателя на него, как это:

pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 

@Override 
public boolean onPreferenceChange(Preference preference, Object newValue) { 
    int value = mSeekBarPreference.getProgress(); //or (int) newValue 
    //You can now use this value wherever you like: 
    pref.setSummary("Value: " + value); 
    return true; 
} 
}); 
+0

SeekBarPreference прив = (SeekBarPreference) findPreference (» seekbar_pref "); Я не могу импортировать SeekBarPreference, только предложение «Create Class ....» – Motosega

+0

Эту же вещь происходит со мной сейчас, когда я проверяю студию Android. Я не совсем понимаю, как вы можете использовать его в xml, а не в коде. Я нашел аналогичный [вопрос] (http://stackoverflow.com/questions/12230975/getting-value-from-custom-seekbarpreference) здесь, на SO. Они используют его как класс в Java. – Vucko

+0

тоже это не работает ... как я могу решить? – Motosega