2012-09-01 56 views
1

我在網上發現了這個代碼,並認爲我會試一試。我把它放在了我的喜好中,而且它是我想要的方式,但我唯一的問題是我無法獲得SeekBar的價值。從定製中獲取價值SeekBarPreference

這裏是鏈接到的代碼,我用我的偏好:

http://android.hlidskialf.com/blog/code/android-seekbar-preference

,這裏是偏好的XML部分:

<com.mypack.SeekBarPreference android:key="zoom" 
     android:title="Zoom" 
     android:summary="" 
     android:dialogMessage="Zoom level" 
     android:defaultValue="50" 
     android:text=" %" 
     android:max="100" 
     /> 

誰能告訴我怎麼去用戶在偏好窗口中更改後,seekbar的值是多少?

+0

這個搜索欄有三個可能的值? – iTurki

+0

你是如何將它納入你的偏好?向我們顯示代碼? – iTurki

+0

我剛剛在xml中使用它 –

回答

2

你可以使用setOnPreferenceChangeListener()

SeekBarPreference mSeekBarPreference = new SeekBarPreference(this, null); 
mSeekBarPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 

    @Override 
    public boolean onPreferenceChange(Preference preference, Object newValue) { 
     // TODO Auto-generated method stub 
     int value = mSeekBarPreference.getProgress(); 
     // Or you just cast the newValue Object 
     return true; 
    } 
}); 
+0

給我nullpointerexeption –

+0

你初始化'mSeekBarPreference'? – iTurki

+0

是的,通過將SeekBarPreference設置爲mSeekBarPreference; –

1

應該像其他任何偏好一樣。

在活動實施SharedPreferences.OnSharedPreferenceChangeListener,則:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(YourActivity.this); 
prefs.registerOnSharedPreferenceChangeListener(this); 

-

public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
    mZoomValue = prefs.getInt("zoom", 50); 
}