次のコードで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);
}
}
私はこれについて頭を悩ませてきましたが、自分で理解するには少し疲れすぎているかもしれません. どんな助けでも大歓迎です。
この問題に関連して、インテントがこのアクティビティに必要なインスタンス化子であるかどうかについて、こちらで質問しました。