0

次のコードでnull ポインター例外が発生しmPreference = (Preference)...ています (つまり、デバッガーがオンの場合、 null が表示されmPreferenceます。NB キーは null ではありません。リテラルに置き換えることができますが、それでも同じ例外が発生します)。

public class SettingsManager extends PreferenceActivity {

    private Preference mPreference;
    private static boolean toggle;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Load the XML preferences file
        addPreferencesFromResource(R.xml.preferences);
    }

    public void setPrefEnabled(Context context, String key, String enabled) {
        if (enabled.contentEquals("true")) {
            toggle = true;
        } else {
            toggle = false;
        }
        mPreference = (Preference) getPreferenceScreen().findPreference(key);
        mPreference.setEnabled(toggle);
    }
}

クラスは、コンストラクターでインスタンス化されapplySettingsたクラスのメソッドで、次のコードによって呼び出されています。settingsManager

public class ConfigurationSetter {

    private static Context mContext;
    private static SettingsManager settingsManager;

    public ConfigurationSetter(Context context) {
        mContext = context;
        settingsManager = new SettingsManager();
    }

    private static void applySettings(Context context, String key,
            String value, String enabled) {
        settingsManager.setPrefEnabled(mContext, key, enabled);
    }
}

私はこれについて頭を悩ませてきましたが、自分で理解するには少し疲れすぎているかもしれません. どんな助けでも大歓迎です。

この問題に関連して、インテントがこのアクティビティに必要なインスタンス化子であるかどうかについて、こちらで質問しました。

4

1 に答える 1