我已经盯着这段代码了一段时间,我不知道我哪里出错了。我正在尝试实现一个覆盖活动,该活动仅在首次运行的应用程序上运行。
我得到一个nullpointer Exception。
非常感谢任何帮助。
我的onCreate():
公共类MainActivity扩展Activity { 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;
}
答案 0 :(得分:2)
尝试获取此类偏好
preferences =getSharedPreferences("yourpreferencename", 0);
您的PreferenceManager.getDefaultSharedPreferences(this);
返回null