0

私は本当に奇妙なものを持っています。無料アプリと有料アプリの2つのアプリがありますが、どちらも基本的に同じコードを使用していますが、無料のアプリに広告を表示するためのコードがいくつかあります。

何らかの理由で、registerOnSharedPreferenceChangeListener()は無料バージョンでは実行されません。さらに奇妙なことに...コードのその行にブレークポイントを設定し、デバッガーを実行すると、正常に登録されます。そこにブレークポイントがないと、登録されません。何がこれを引き起こすのか考えていますか?たぶん、プロジェクトの設定が違うのでしょうか?私はこれを一日中修正しようとしています!

コード:

SharedPreferences.OnSharedPreferenceChangeListener prefsListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
        @Override
        public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
            if(key.equals(AUTORESPONSEGLOBAL))
            {
                ARCheckBox.setChecked(settings.getBoolean(AUTORESPONSEGLOBAL, false));
                if(ARCheckBox.isChecked())
                {
                    //green 0xaarrggbb a=alpha
                    AR_label.setTextColor(0xff00ff00);
                }
                else
                {
                    //red
                    AR_label.setTextColor(0xffff0000);
                }
            }
            if(key.equals(CLOCK24))
            {
                updateTime();
            }
        }
    };

    settings.registerOnSharedPreferenceChangeListener(prefsListener);
4

1 に答える 1

2

OK、なぜそれが一方のプロジェクトで機能し、もう一方のプロジェクトでは機能しなかったのかはまだわかりません...しかし、私はそれを修正しました。

私はで宣言しSharedPreferences.OnSharedPreferenceChangeListener prefsListener = new SharedPreferences.OnSharedPreferenceChangeListener() { ... };ていましたonCreate()。独自の別の方法に変更しましたが、今は問題なく動作しているようです。一貫性を保つために、両方のプロジェクトをこのように機能するように変更しました。

于 2012-10-30T13:07:15.960 に答える