0

我已经为我的应用注册了一个 onSharedPreferencesChanged 监听器。如果我第一次安装我的应用程序,则会触发 sharedPreferencesChanged 侦听器,但它不应该。

这是我的代码:

onSharedPrefChangedListener = new SharedPreferences.OnSharedPreferenceChangeListener() {


            @Override
            public void onSharedPreferenceChanged(
                    SharedPreferences sharedPreferences, String key) {
                // TODO Auto-generated method stub
                 if(key.equals(ENABLE_BANNER_AD_PREFERENCE_KEY)){
        Toast.makeText(FragmentTabsPager.this,getString(R.string.will_disable_restart), Toast.LENGTH_SHORT).show();
                }

            }

        };
        sharedPreferences.registerOnSharedPreferenceChangeListener(onSharedPrefChangedListener);

这就是 Preferences XML :

 <CheckBoxPreference android:title="@string/title"
                        android:summary="@string/summary"
                        android:icon="@drawable/icon"
                        android:defaultValue="true"
                         android:key="bannerKey"> </CheckBoxPreference>

当我在安装后第一次启动应用程序时出现 Toast。如果我再次启动应用程序并导航到 Preferences,preferencesListener 将不会被触发。

有没有人有解决这个问题的想法?

4

1 回答 1

0

IMO 系统所做的是正确的行为。

但是您应该能够引入一个标志来区分第一次调用和后续调用。

于 2013-08-06T09:03:21.803 回答