Android 在我的应用程序中从未调用OnSharedPreferenceChangeListener()

Android 在我的应用程序中从未调用OnSharedPreferenceChangeListener(),android,android-listview,android-preferences,Android,Android Listview,Android Preferences,我一直在开发应用程序,其中我有一个首选项活动,我有一个列表首选项,用于排序列表视图,它位于主活动。我已经在SharedPreferenceChangeListener()上实现了,但是当我返回到MainActivity时,它不会被调用,在那里我有一个listView,有时listView被取消,当我关闭我的应用程序,然后重新启动它时,列表视图在我上次在首选项活动中选择的选项中排序,我的代码是: protected SharedPreferences settings = null; privat

我一直在开发
应用程序
,其中我有一个
首选项活动
,我有一个
列表首选项
,用于排序
列表视图
,它位于
主活动
。我已经在SharedPreferenceChangeListener()上实现了
,但是当我返回到
MainActivity
时,它不会被调用,在那里我有一个
listView
,有时
listView
被取消,当我关闭我的应用程序,然后重新启动它时,
列表视图
在我上次在
首选项活动
中选择的选项中排序,我的代码是:

protected SharedPreferences settings = null;
private OnSharedPreferenceChangeListener changeListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    settings = PreferenceManager
            .getDefaultSharedPreferences(MainActivity.this);

    // Make a Connection to Database... and open it...
    source = new CandidateDataSource(MainActivity.this);
    source.opend_db();

    objects = source.getAllData();

    // adapter = new CandidateAdapter(MainActivity.this, objects, true);

    adapter = initializeList(settings.getString("sort_order",
            CandidateOpenHelper.COL_NAME));

    changeListener = new OnSharedPreferenceChangeListener() {

        @Override
        public void onSharedPreferenceChanged(SharedPreferences arg0,
                String arg1) {
            // TODO Auto-generated method stub
            String setPrefs = settings.getString("sort_order", "Not Found");

            adapter = initializeList(setPrefs);
            Log.e("PREFS REFS", "PREF IS " + setPrefs);
        }
    };

    settings.registerOnSharedPreferenceChangeListener(changeListener);

    UIHelper.listHelper(MainActivity.this, R.id.list_container, adapter,
            null, null);

}

private CandidateAdapter initializeList(String sort_order) {
    if (objects != null) {
        objects.close();
    }

    objects = source.getAllData(sort_order);

    return adapter = new CandidateAdapter(MainActivity.this, objects, true);
}
UIHelper.listHelper()
方法如下所示:

static public void listHelper(Activity activity, int id, CandidateAdapter adapter, OnItemClickListener itemClickListener, OnItemLongClickListener longClickListener){
    ListView listView = (ListView) activity.findViewById(id);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(itemClickListener);
    listView.setOnItemLongClickListener(longClickListener);
}

在这种情况下,如何使共享首选项ChangeListener()上的
正常工作。

是否使用HoloEverywhere?我这样问是因为他包含了自己的
SharedReferences
,而这个问题可能是由于导入了错误的软件包造成的。我怎么能找到它??