我一直在盯着这段代码现在一段时间,我不能看到我出错的地方。我正在尝试执行仅在首次运行的应用程序上运行的覆盖活动。preferences.getBoolean导致崩溃
我得到一个空指针异常。
任何帮助将不胜感激。
我的onCreate():
公共类MainActivity延伸活动{ SharedPreferences偏好; 查看topLevelLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
topLevelLayout= findViewById(R.layout.activity_instructions);
preferences = PreferenceManager.getDefaultSharedPreferences(this);
if (isFirstTime()) {
topLevelLayout.setVisibility(View.INVISIBLE);
}
而且isFirstTime方法:
private boolean isFirstTime()
{
boolean ranBefore = preferences.getBoolean("RanBefore", false); // The program crashes here
if (!ranBefore) {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("RanBefore", true);
editor.commit();
topLevelLayout.setVisibility(View.VISIBLE);
topLevelLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
topLevelLayout.setVisibility(View.INVISIBLE);
return false;
}
});
}
return ranBefore;
}
你需要看看'PreferenceManager.getDefaultSharedPreferences(此);'因为它返回null,这就是为什么你得到一个NPE。 – Eluvatar 2013-02-26 18:25:11