2012-12-02 26 views
9

我的代碼中有一個首選項活動。 我想在用戶更改Listpreferences中的單選按鈕時顯示敬酒。 我用這個代碼,但它不工作。 :(當ListPreferences發生更改時,不會調用onPreferenceChange方法

public class PrefsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
addPreferencesFromResource(R.xml.prefs); 
} 
public void onSharedPreferenceChanged(SharedPreferences arg0, String key) { 

ListPreference listPreference = (ListPreference) findPreference(key); 
listPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 

    @Override 
    public boolean onPreferenceChange(Preference preference, Object newValue) { 
     // TODO Auto-generated method stub 
     Toast.makeText(PrefsActivity.this, "second", Toast.LENGTH_LONG).show(); 
     return false; 
    } 
}); 
} 
} 

什麼是我的問題

+4

您應該修改這一新信息到您現有的問題中:[當用戶在首選項活動中更改設置時顯示敬酒](http://stackoverflow.com/q/13665409/1267661),而不是創建一個新問題。請參閱[常見問題]瞭解可接受的方式以更多關注您的問題。 – Sam

+0

@Reza_rg:你試試'Log.v(「ListPreference」,「onPreferenceChange」);'看到onPreferenceChange被調用或不在logcat中? –

+0

@imrankhan我現在嘗試了它,似乎onPreferenceChange no被調用。我現在應該怎麼做? –

回答

16

onCreate代碼更改爲:?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.prefs); 

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

您沒有添加registerOnSharedPreferenceChangeListenerPrefsActivity活動

+0

你有試過嗎? –

+0

是的!這是我的錯誤,謝謝。 :) –

+0

現在,我有另一個問題。 :(當我點擊listpreferences中的一個單選按鈕時,它會烤乾我想要的東西,但它不會更新listpreferences中的值。 –

相關問題