[英]OnSharedPreferenceChangeListener Won't Work?
I am trying to change the application background color, and the font type via theme when a preference is changed in the prefs area. 当在首选项区域中更改首选项时,我试图通过主题更改应用程序背景色和字体类型。
So far I have the preferences working but when I put the listener in, it just does not get called. 到目前为止,我可以使用首选项,但是当我放入监听器时,它不会被调用。 I am testing using toasts to see if it appears.
我正在测试使用吐司,看它是否出现。
My Code: 我的代码:
package alertssystem.lsa13tafeproj.lsa13.resistorcalculator;
import android.app.ActionBar;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.widget.RelativeLayout;
import android.widget.Toast;
import java.util.prefs.PreferenceChangeEvent;
import java.util.prefs.PreferenceChangeListener;
public class Prefs extends PreferenceActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit();
}
@Override
public void onBackPressed()
{
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
public static class PreferencesFragment extends PreferenceFragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
}
There is no changeListener in above code as none of the solutions I found worked, can someone please tell me how I can implement this into this. 上面的代码中没有changeListener,因为我发现没有一种解决方案有效,有人可以告诉我如何在此实现它。
The user clicks on the ListPreference and it has the 2 options I have inserted, but nothing happens when new option is selected. 用户单击ListPreference,它具有我已插入的2个选项,但是当选择新选项时什么也没有发生。
This works for me: 这对我有用:
public class MyPreferenceFragment extends PreferenceFragment implements
OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onDestroy() {
PreferenceManager.getDefaultSharedPreferences(getActivity()).unregisterOnSharedPreferenceChangeListener(this);
super.onDestroy();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// Toast
}
}
Make sure you register your listener before changing the pref, and not unregistering it until you do. 确保在更改首选项之前先注册您的监听器,然后再取消注册。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.