我在以下代码中mPreference = (Preference)...
上获得空指针异常(即启用调试器,mPreference
显示为null; 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);
}
}
我一直在摸不着头脑,但可能有点太累了,无法自己解决这个问题。任何帮助表示赞赏。
与此问题相关,我asked a question here关于意图是否是此活动所需的实例化。
答案 0 :(得分:0)
您的onCreate
方法永远不会在此代码中调用(因此PreferenceScreen
在调用addPreferencesFromResource
时未填充onCreate
。 Activity
是Activity
生命周期的一部分,如果您使用Intent
启动new
,则会调用该生命周期。通常不会使用Context
创建活动,因为在这种情况下,他们无法链接到正确的{{1}}并显示其他形式的未定义行为,例如您的行为。